我想要在研究的每个条件中简单计算受试者的数量.数据看起来像这样:
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为每个子数据帧生成汇总列.
使用我加载到对象中的数据片段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)