Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:计算每个ID的唯一值的数量_R - Fatal编程技术网

R:计算每个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

我试图创建一个频率表,返回每个ID的唯一诊断数,但某些ID多次被分配相同的诊断代码。以下是我的数据的外观:

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()
from
dplyr
aggregate()
from
base 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))