【发布时间】:2019-07-24 16:23:46
【问题描述】:
我有这个代码:
df<-data.frame(a=c(1,2,2,2,2), b=c(2,2,2,2,1), c=c(3,3,3,3,4), d=c(6,6,6,6,7))
tblFun <- function(x){
tbl <- table(x)
res <- cbind(tbl,round(prop.table(tbl)*100,2))
colnames(res) <- c('Count','Percentage')
res
}
如果我跑了:
do.call(rbind,lapply(df,tblFun))
我收到:
Count Percentage
1 1 20
2 4 80
1 1 20
2 4 80
3 4 80
4 1 20
6 4 80
7 1 20
但如果我跑:
as.data.frame(do.call(rbind,lapply(df,tblFun)))
我收到:
Count Percentage
X1 1 20
X2 4 80
X1.1 1 20
X2.1 4 80
X3 4 80
X4 1 20
X6 4 80
X7 1 20
我想修改代码,使其具有第一列的数据框,例如 在控制台中输出(不是我们在 View()! 中看到的矩阵的实际内容)运行 do.call(rbind,lapply(df,tblFun))。如何做到这一点?
【问题讨论】:
-
转换成
tibbleas_tibble(do.call(rbind, lapply(df, tblFun)))