gpt4 book ai didi

R 带条件的频率表

转载 作者:行者123 更新时间:2023-12-04 11:20:09 24 4
gpt4 key购买 nike

我有一个包含两列“CaseID”和“Event”的数据框,我想知道 ID=X 的事件后面跟 ID=Y 的事件的频率。但我只对具有相同 CaseID 的连续事件感兴趣。

命令

df <- data.frame(CaseID = c(1,1,1,2,2,2,3,3,3), 
Event = c("A","B","C","A","B","D","B","C","E"))
df
table(df[1:nrow(df) -1, 2], df[2:nrow(df), 2])

结果是
  CaseID Event
1 1 A
2 1 B
3 1 C
4 2 A
5 2 B
6 2 D
7 3 B
8 3 C
9 3 E

A B C D E
A 0 2 0 0 0
B 0 0 2 1 0
C 1 0 0 0 1
D 0 1 0 0 0
E 0 0 0 0 0

C -> A 和 D -> B 有不同的 CaseID,应该是 0 所以我要找的是
  B C D E
A 2 0 0 0
B 0 2 1 0
C 0 0 0 1
D 0 0 0 0
E 0 0 0 0

有没有什么优雅的方法可以根据连续的两行向 table-command 添加条件?

最佳答案

我们只能连续制表Event s 同 CaseID :

> x <- diff(df$CaseID) == 0
> table(df[1:nrow(df) -1, 2][x], df[2:nrow(df), 2][x])

A B C D E
A 0 2 0 0 0
B 0 0 2 1 0
C 0 0 0 0 1
D 0 0 0 0 0
E 0 0 0 0 0

万一 CaseID可能是非数字的:
x <- df$CaseID[-1] == df$CaseID[-length(df$CaseID)]
table(df[1:nrow(df) -1, 2][x], df[2:nrow(df), 2][x])

关于R 带条件的频率表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52645191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com