首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R将多个应急表合并为一个

R将多个应急表合并为一个
EN

Stack Overflow用户
提问于 2016-04-06 01:02:34
回答 2查看 384关注 0票数 1

我有以下应急表

代码语言:javascript
复制
structure(list(`1` = structure(c(1L, 1L, 1L, 0L, 1L, 0L), .Dim = 2:3, .Dimnames = structure(list(
c("a", "b"), c("x", "y", "z")), .Names = c("", "")), class = "table"), 
`2` = structure(c(1L, 1L, 0L, 1L), .Dim = c(2L, 2L), .Dimnames = structure(list(
    c("b", "c"), c("y", "z")), .Names = c("", "")), class = "table")), .Names = c("1", "2"))

这个列表有两个应急表,我想把它们合并成一个。我尝试了here的解决方案,但没有成功。它给出了以下错误

代码语言:javascript
复制
> tapply(T,names(T),sum)
Error in FUN(X[[1L]], ...) : invalid 'type' (list) of argument

预期输出是

代码语言:javascript
复制
> table(x[[1]],x[[2]])

   x y z
 a 1 1 1
 b 1 1 0
 c 0 1 1

x在哪里

代码语言:javascript
复制
structure(list(id = c("a", "a", "a", "b", "b", "c", "c"), upc = c("x","y", "z", "x", "y", "z", "y"), sfactor = c("1", "1", "1", "1","2", "2", "2")), .Names = c("id", "upc", "sfactor"), row.names = c(NA, -7L), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x25aa378>)

任何帮助都很感激。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-06 01:11:15

将表转换为long data.frames,然后收集计数:

代码语言:javascript
复制
xtabs(Freq ~ ., data=do.call(rbind, lapply(L, data.frame) ))

#    Var2
#Var1 x y z
#   a 1 1 1
#   b 1 1 0
#   c 0 1 1
票数 2
EN

Stack Overflow用户

发布于 2016-04-06 02:52:43

我们还可以在使用dcastlist元素使用rbindlist之后,将listrbind一起用作sum

代码语言:javascript
复制
library(data.table)
dcast(rbindlist(lapply(L, as.data.frame)),
              Var1~Var2, value.var="Freq", sum)
#   Var1 x y z
#1:    a 1 1 1
#2:    b 1 1 0
#3:    c 0 1 1

如果我们不希望使用"Var1“列,则可以使用acast (来自reshape2)

代码语言:javascript
复制
library(reshape2)
acast(rbindlist(lapply(L, as.data.frame)), 
             Var1~Var2, value.var="Freq", sum)
#   x y z
# a 1 1 1
# b 1 1 0
# c 0 1 1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36439661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档