2015-04-02 60 views
1

我有大约18个数据帧,它们基本上是存储在列Rptnames中的元素的频率计数。他们都有一些不同,有的在Rptnames列相同的元素,使他们看起来像这家名为GroupedTableProportiondelAll当只有一些列匹配时如何删除

Rptname freq 

bob   4324234 
jane  433 
ham  4324 
tim   22 

dataframe called GroupedTableProportiondelLUAD 

Rptname  freq 

bob   987 
jane   223 
jonny  12 
jim   98092 

我试图建立一个表,以便Rptname成为列

数据框和各行是频率。这样我就可以组合所有的数据帧。

我曾尝试以下

GroupedTableProportiondelAll_T <- as.data.frame(t(GroupedTableProportiondelAll)) 
    GroupedTableProportiondelLUAD_T <- as.data.frame(t(GroupedTableProportiondelLUAD)) 

    total <- rbind(GroupedTableProportiondelLUAD_T, GroupedTableProportiondelAll_T) 

,但我得到的错误 错误rbind(deparse.level,...): 数的参数列不匹配

所以问题是 a)我该怎么做rbind(cbind也会在没有转置的情况下执行我想的),以便绑定可以在不需要匹配的情况下发生。
b)将合并在这里更好 c)是否有一种方法可以为空值输入零 d)P'raps有更好的方法来做到这一点,像矩阵我不熟悉?我知道它的4个问题,但中心问题是相同的 - 当不是所有的行或列匹配时如何绑定

+0

您应该将数据保留为长格式。这意味着你应该为每个data.frame添加一个data.frame的ID和'rbind'它们。如果你坚持使用宽格式,那么以后你可以在reshape2包中使用'dcast',尽管这通常会使数据更难处理。 – Roland 2015-04-02 07:28:26

+0

换句话说,我应该合并?那会用零填充空值吗? – 2015-04-02 07:31:58

+0

我在哪里提到'合并'?我想你可以使用它... – Roland 2015-04-02 07:32:28

回答

1

您可以在添加列以标识data.frame之后首先添加rbind数据帧。然后使用reshape2包中的dcast函数。

rpt1 
## Rptname freq df 
## 1  bob 4324234 rpt1 
## 2 jane  433 rpt1 
## 3  ham 4324 rpt1 
## 4  tim  22 rpt1 

rpt2 
## Rptname freq df 
## 1  bob 987 rpt2 
## 2 jane 223 rpt2 
## 3 jonny 12 rpt2 
## 4  jim 98092 rpt2 


rpt1$df <- "rpt1" 
rpt2$df <- "rpt2" 
rpt <- rbind(rpt1, rpt2) 
dcast(data = rpt, df ~ Rptname, value.var = "freq") 
##  df  bob ham jane tim jim jonny 
## 1 rpt1 4324234 4324 433 22 NA NA 
## 2 rpt2  987 NA 223 NA 98092 12 
+2

因为他们有很多data.frames,他们应该把它们放在一个列表中,并做类似'DFlist < - Map(cbind,DFlist,g = seq_along(DFlist)); DF < - do.call(rbind,DFlist)'。 – Roland 2015-04-02 07:41:37

相关问题