2017-03-17 28 views
4

我有一個數據幀,例如這樣的:每個組中代表了多少個不同的變量?

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 

爲了計算每組中不同變量的數量。

回答

4

使用:

df %>% 
    group_by(Group) %>% 
    summarise_at(vars(V1:V3), funs(as.integer(any(. > 0)))) 

給出:

# A tibble: 2 × 4 
    Group V1 V2 V3 
    <fctr> <dbl> <dbl> <dbl> 
1  A  1  0  1 
2  B  1  1  1 
+0

每逢'summarise_each'進行最終去除,'DF%>%GROUP_BY( Group)%>%summarise_at(vars(V1:V3),funs(as.integer(任何(。> 0))))'(或者如果你願意,可以去掉'> 0') – alistaire

+0

@alist愛是真的,忘了那個;更新 – Jaap

+0

我猜你欺騙了用戶發佈的類似問題 – akrun

0

可以在data.table來完成:

require(data.table) 
setDT(df) 
table <- df[, .(sum(V1) > 0, sum(V2) > 0, sum(V3) > 0), Group] 
table 
    Group V1 V2 V3 
1:  A TRUE FALSE TRUE 
2:  B TRUE TRUE TRUE 

table[, lapply(.SD, as.integer), Group, .SD=2:4] 

    Group V1 V2 V3 
1:  A 1 0 1 
2:  B 1 1 1 
相關問題