我在这里有以下代码:In R, how can I compute percentage statistics on a column in a dataframe ? (table function extended with percentages)。在第一列中,它给出变量的值。在第二列中,它提供了df
中do.call(rbind,lapply(df,tblFun))
中指定的每个变量的每个值的计数(因此可以像:do.call(rbind,lapply(df[1],tblFun))
或do.call(rbind,lapply(df[1:3],tblFun))
等。 )。在第三列中,id给出了该值出现百分比的频率。
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
}
a<-do.call(rbind,lapply(df,tblFun))
out <- do.call(rbind,lapply(df,tblFun))
out <- cbind(index = as.numeric(row.names(out)), out)
row.names(out) <- NULL
b<-as.data.frame(out)
b
它正在按预期方式工作并给出了结果:
index Count Percentage
1 1 1 20
2 2 4 80
3 1 1 20
4 2 4 80
5 3 4 80
6 4 1 20
7 6 4 80
8 7 1 20
我需要:相应值的变量名称也应包含在单独的行中,这样结果应该看起来像(SO不会按照我的格式进行格式化,所以我放在了pastebin上) https://pastebin.com/F1SK3JWc。因此,我在这里需要实现的是在第一行的*************
,第二行的变量名,随后的第三行---------
,随后的行中对该变量的值进行修改,并针对所有变量执行此操作。>