2017-03-17 20 views
1

我有一个数据帧,如本中:计数不同变量的数量的一组

df <- data.frame(
    ID = c('123','124','125','126'), 
    Group = c('A', 'A', 'B', 'B'), 
    V1 = c(1,2,1,0), 
    V2 = c(0,0,1,0), 
    V3 = c(1,1,0,3)) 

它返回:

ID Group V1 V2 V3 
1 123  A 1 0 1 
2 124  A 2 0 1 
3 125  B 1 1 0 
4 126  B 0 0 3 

,我希望返回一个表格,指示如果变量是否在组中表示:

Group V1 V2 V3 
A  1 0 1 
B  1 1 1 

为了计算每个gr中不同变量的数量牛津大学出版社。

+0

你可以用'count'或'n_distinct'。问题不清楚 – akrun

+0

'长度(独特(mtcarts $ cyl))' – maloneypatr

+0

imo它很清楚;我将重新打开,如果OP证明,否则 – Jaap

回答

2

我们可以从base R

+(rowsum(df[-(1:2)], df$Group)>0) 
# V1 V2 V3 
#A 1 0 1 
#B 1 1 1 

base R

aggregate(.~Group, df[-1], function(x) as.integer(sum(x)>0)) 
# Group V1 V2 V3 
#1  A 1 0 1 
#2  B 1 1 1 

或者使用rowsum做到这一点

或者与bybase R

+(do.call(rbind, by(df[3:5], df['Group'], FUN = colSums))>0) 
# V1 V2 V3 
#A 1 0 1 
#B 1 1 1 
0

你试过

unique(group_by(mtcars,cyl)$cyl). 

Output:[1] 6 4 8