我有一个如下所示的数据集:
name status
1 john sick
2 john sick
3 john healthy
4 john sick
5 john healthy
6 alex sick
7 alex sick
8 tim healthy
9 tim healthy
10 tim sick
11 tim sick
对于这个数据集,我想知道人们离开的次数:
例如:
生病:约翰(生病,生病),亚历克斯(生病,生病),蒂姆(生病,生病)=发生在数据集中3倍Times
中
我不知道如何处理这个问题,在R-谁能建议如何做到这一点?
谢谢!
发布于 2022-10-27 03:31:03
我将使用dplyr::lag()
和count()
来处理这个问题。
library(dplyr)
library(tidyr)
df1 %>%
group_by(name) %>%
mutate(from = dplyr::lag(status)) %>%
ungroup() %>%
count(from, to = status) %>%
drop_na()
输出:
# A tibble: 4 × 3
from to n
<chr> <chr> <int>
1 healthy healthy 1
2 healthy sick 2
3 sick healthy 2
4 sick sick 3
发布于 2022-10-27 03:42:07
从技术上讲,应急表是一个包含两个(或多个)维度条目的表。因此:
ct <- table(
do.call(rbind, by(data, data$name, function(x)
data.frame(from = head(x$status, -1), to = tail(x$status, -1)))))
ct
#> to
#> from healthy sick
#> healthy 1 2
#> sick 2 3
https://stackoverflow.com/questions/74216387
复制相似问题