R:如何转换和合并表
我有一张三列的桌子。第一列包含示例名称、第二个数字和第三个ID。以下是一个例子:R:如何转换和合并表,r,R,我有一张三列的桌子。第一列包含示例名称、第二个数字和第三个ID。以下是一个例子: Samples Count ID S1 99057 Lactobacillales S1 608 Enterobacterales S1 507 Choanoflagellida S1 495 Burkholderiales S1 456 Pseudomonadales S1 398 Nostocales S
Samples Count ID
S1 99057 Lactobacillales
S1 608 Enterobacterales
S1 507 Choanoflagellida
S1 495 Burkholderiales
S1 456 Pseudomonadales
S1 398 Nostocales
S1 286 Suessiales
S2 3742 Lactobacillales
S2 631 Pseudomonadales
S2 276 Micrococcales
S2 261 Burkholderiales
S2 244 Choanoflagellida
S2 239 Rhizobiales
S2 239 Enterobacterales
我需要对表进行转置和合并,以便第一列包含ID,第二列包含样本S1中每个ID的编号,第三列包含样本S2中每个ID的编号。例如:
ID S1 S2
Lactobacillales 3742 99057
Enterobacterales 239 608
Choanoflagellida 244 507
Burkholderiales 261 495
Pseudomonadales 631 456
Nostocales 0 398
Suessiales 0 286
Micrococcales 276 0
Rhizobiales 239 0
到目前为止,我是在Excel中完成的,但这对于较大的表是不可行的。
如何在R中实现这一点?非常感谢您的帮助。您可以使用
重塑2
软件包中的dcast
功能-
> reshape2::dcast(dt,ID~Samples,value.var = "Count",fill=0)
ID S1 S2
1 Burkholderiales 495 261
2 Choanoflagellida 507 244
3 Enterobacterales 608 239
4 Lactobacillales 99057 3742
5 Micrococcales 0 276
6 Nostocales 398 0
7 Pseudomonadales 456 631
8 Rhizobiales 0 239
9 Suessiales 286 0
注意-如果您的数据大于使用
data.table
包中的dcast.data.table
。重塑(df,timevar=“Samples”,v.names=“Count”,idvar=“ID”,direction=“wide”)
。看到我的坏消息了。我增加了包裹的细节。