Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:如何转换和合并表_R - Fatal编程技术网

R:如何转换和合并表

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

我有一张三列的桌子。第一列包含示例名称、第二个数字和第三个ID。以下是一个例子:

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”)
。看到我的坏消息了。我增加了包裹的细节。