计算数据框中的唯一项

WGr*_*ray 8 r

我想要在研究的每个条件中简单计算受试者的数量.数据看起来像这样:

subjectid  cond   obser variable
1234        1        1      12   
1234        1        2      14
2143        2        1      19
3456        1        1      12 
3456        1        2      14 
3456        1        3      13   

etc       etc    etc       etc
Run Code Online (Sandbox Code Playgroud)

这是一个大型数据集,并不总是很明显有多少独特的主题对每种情况有贡献等.

我在data.frame中有这个.

我想要的是类似的东西

cond   ofSs 
1       122 
2        98
Run Code Online (Sandbox Code Playgroud)

对于每个"条件",我得到对该条件贡献数据的唯一S数的计数.看起来这应该是非常简单的.

Pra*_*ani 13

使用包中的ddply功能plyr:

require(plyr)
df <- data.frame(subjectid = sample(1:3,7,T), 
                 cond = sample(1:2,7,T), obser = sample(1:7))

> ddply(df, .(cond), summarize, NumSubs = length(unique(subjectid)))
  cond NumSubs
1    1       1
2    2       2
Run Code Online (Sandbox Code Playgroud)

ddply函数通过cond变量"分割"数据帧,并NumSubs为每个子数据帧生成汇总列.


Rei*_*son 5

使用我加载到对象中的数据片段dat:

> dat
  subjectid cond obser variable
1      1234    1     1       12
2      1234    1     2       14
3      2143    2     1       19
4      3456    1     1       12
5      3456    1     2       14
6      3456    1     3       13
Run Code Online (Sandbox Code Playgroud)

然后一种方法是使用聚合来计算唯一subjectid(假设你的意思是"Ss"???

> aggregate(subjectid ~ cond, data = dat, FUN = function(x) length(unique(x)))
  cond subjectid
1    1         2
2    2         1
Run Code Online (Sandbox Code Playgroud)