R语言 计算事件之间转换的每个组合的示例?

5gfr0r5j  于 2023-07-31  发布在  其他
关注(0)|答案(2)|浏览(88)

我有一个包含事件序列的 Dataframe :一列标识人员,一列标识序列号,一列标识事件。

existing_df <- data.frame (person  = c("john", "john", "jane","jane","jane"),
                  event = c("skate", "sit", "walk","skate","sit"),
                  sequenceNum = c(1,2,1,2,3)
                  )

字符串
我需要转换它来计算每一步之间的转换次数:

desired_df <- data.frame(
  source=c("skate","walk"), 
  target=c("sit","skate"), 
  value=c(2,1)
  )


我可以用一个循环来实现,但我想知道是否有一种方法可以用tidyr或dplyr来实现。

uttx8gqw

uttx8gqw1#

使用countseparate_wider_delim分离变量的方法。假设 sequenceNum 的顺序正确。必要时添加arrange(person, sequenceNum)

library(dplyr)
library(tidyr)

existing_df %>% 
  reframe(res = paste(event, lead(event)), .by = person) %>% 
  count(res, name = "value") %>% 
  separate_wider_delim(res, " " , names = c("source", "target")) %>% 
  filter(target != "NA")
# A tibble: 2 × 3
  source target value
  <chr>  <chr>  <int>
1 skate  sit        2
2 walk   skate      1

字符串

mgdq6dx1

mgdq6dx12#

在人员组中添加额外列(目标),筛选NA,然后计数

library(tidyverse)

existing_df |> 
  
  group_by(person) |> 
  mutate(target = lead(event)) |> 
  ungroup() |> 
  
  filter(!is.na(target)) |> 
  count(source = event, target)

字符串

相关问题