xtabs可以创建一个汇总表,并结合cbind对多个变量进行汇总,并按其余变量进行分组:
df<-data.frame(publication_date=c("2015 Jul","2015 Jul","2015 Aug","2015 Aug"),
Asym=c(3,5,1,2),
Auth=c(5,7,2,3),
Cert=c(1,2,3,4))
xtabs(cbind(Auth, Asym, Cert)~., data=df)
#publication_date Auth Asym Cert
# 2015 Aug 5 3 7
# 2015 Jul 12 8 3是否有一种方法可以编程地绑定除一个变量之外的所有变量,特别是不写出所有变量名(例如,如果df有多个列)。
我试过了
xtabs(cbind(df[2:4])~., data=df)
xtabs(cbind(names(df[2:4]))~., data=df)
#Error in ... variable lengths differ发布于 2022-11-29 19:29:52
使用paste/sprintf创建公式对象
xtabs(as.formula(sprintf("cbind(%s)~.", toString(names(df)[-1]))), data = df)-output
publication_date Asym Auth Cert
2015 Aug 3 5 7
2015 Jul 8 12 3或者正如@G. Grothendieck所提到的,只要一个字符串作为公式就足够了。
发布于 2022-11-29 19:55:49
我们可以使用lapply/tapply,然后设置酒窝名称。
tab <- do.call("cbind", lapply(df[-1], tapply, df[[1]], sum))
names(dimnames(tab)) <- c(names(df)[1], "")
class(tab) <- c("xtabs", "array") # optional
tab
## publication_date Asym Auth Cert
## 2015 Aug 3 5 7
## 2015 Jul 8 12 3https://stackoverflow.com/questions/74619215
复制相似问题