R:计算每个ID的唯一值的数量
我试图创建一个频率表,返回每个ID的唯一诊断数,但某些ID多次被分配相同的诊断代码。以下是我的数据的外观:R:计算每个ID的唯一值的数量,r,R,我试图创建一个频率表,返回每个ID的唯一诊断数,但某些ID多次被分配相同的诊断代码。以下是我的数据的外观: EncounterID Diagnosis 1 a 1 a 1 c 2 a 2 b 3 e 3 e 3 e 以下是我希望频率表的外观: Encou
EncounterID Diagnosis
1 a
1 a
1 c
2 a
2 b
3 e
3 e
3 e
以下是我希望频率表的外观:
EncounterID Diagnosis
1 2
2 2
3 1
我对R比较陌生,我想代码的第一部分。这是我尝试过的代码,但它没有返回唯一诊断的数量
试试这个。您可以使用
dplyr中的groupby()
和summary()
fromdplyr
或aggregate()
frombase R
。代码如下:
library(dplyr)
#Code
newdf <- df %>% group_by(EncounterID) %>% summarise(Diagnosis=n_distinct(Diagnosis))
输出:
# A tibble: 3 x 2
EncounterID Diagnosis
<int> <int>
1 1 2
2 2 2
3 3 1
EncounterID Diagnosis
1 1 2
2 2 2
3 3 1
使用的一些数据:
#Data
df <- structure(list(EncounterID = c(1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L
), Diagnosis = c("a", "a", "c", "a", "b", "e", "e", "e")), class = "data.frame", row.names = c(NA,
-8L))
#数据
df我决定使用代码2,并得到了我期望的结果。谢谢你的回复!
#Data
df <- structure(list(EncounterID = c(1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L
), Diagnosis = c("a", "a", "c", "a", "b", "e", "e", "e")), class = "data.frame", row.names = c(NA,
-8L))