2017-01-31 20 views
0

我有一个R的数据框,我想重新组织。考虑以下几点:重新组织R数据帧 - 超出reshape2(我认为)

samples=c("167_1", "167_2", "167_3", "167_4", "167_5", "167_6", "167_7", "167_8", "167_9", "167_10", "167_11", "167_12", "167_13", "167_14", "167_15") 
condition=c("Group4", "Group7", "Group8", "Group3", "Group4", "Group2", "Group6", "Group1", "Group2", "Group9", "Group7", "Group8", "Group3", "Group5", "Group5") 
df=data.frame(samples, condition) 

提供了以下:

> head(df) 
    samples condition 
1 167_1 Group4 
2 167_2 Group7 
3 167_3 Group8 
4 167_4 Group3 
5 167_5 Group4 
6 167_6 Group2 

我想重新组织数据,例如:

condition samples  
Group1  167_8 
Group2  167_6, 167_9 
Group3  167_13, 167_4 
Group4  167_1, 167_5 
Group5  167_14, 167_15 
Group6  167_7 
Group7  167_11, 167_2 
Group8  167_12, 167_3 
Group9  167_10 

我使用reshape2试过,我可以从长到宽的格式,但我不知道如何从新手的混乱进展到一个总结列表。

library(reshape2) 
dcast(df, condition ~ samples) 

任何帮助将不胜感激,谢谢。

回答

2

可以按如下方式与dplyr做到这一点:

library(dplyr) 

df %>% 
    group_by(condition) %>% 
    summarise(samples = paste(samples, collapse = ", ")) 

结果:

# A tibble: 9 × 2 
    condition  samples 
    <fctr>   <chr> 
1 Group1   167_8 
2 Group2 167_6, 167_9 
3 Group3 167_4, 167_13 
4 Group4 167_1, 167_5 
5 Group5 167_14, 167_15 
6 Group6   167_7 
7 Group7 167_2, 167_11 
8 Group8 167_3, 167_12 
9 Group9   167_10 
+0

或者你可以使用'nest':'df_new = DF%>%巢(样本)',它为每组提供可变长度的胫骨 – lbusett