R -每列占整个数据帧的百分比



我有一个数据框架报告每个问题的答案计数(这只是它的一部分),我想获得每个问题的答案百分比。我找到了adorn_百分比,但它通过除以整个数据帧的值来计算百分比,同时,我只想要每列的百分比。每栏共有2230个答案。我想用(x/2230)*100,但我不知道该怎么做。

df<-data.frame(q1=c(159,139,1048,571,93), q2=c(106,284,1043,672,125), q3=c(99,222,981,843,94))
q1   q2  q3
1  159  106  99
2  139  284 222
3 1048 1043 981
4  571  672 843
5   93  125  94

我们可以使用colSums在保持长度相同后进行除法

100 * df/colSums(df)[col(df)]

或使用sweep

100 * sweep(df, 2, colSums(df), `/`)

或者使用proportions

df[paste0(names(df), "_prop")] <- 100 * proportions(as.matrix(df), 2)

与产出

> df
q1   q2  q3   q1_prop   q2_prop   q3_prop
1  159  106  99  7.910448  4.753363  4.421617
2  139  284 222  6.915423 12.735426  9.915141
3 1048 1043 981 52.139303 46.771300 43.814203
4  571  672 843 28.407960 30.134529 37.650737
5   93  125  94  4.626866  5.605381  4.198303

您可以为每一列应用prop.table-

library(dplyr)
df %>% mutate(across(.fns = prop.table, .names = '{col}_prop') * 100)
#    q1   q2  q3   q1_prop   q2_prop   q3_prop
#1  159  106  99  7.910448  4.753363  4.421617
#2  139  284 222  6.915423 12.735426  9.915141
#3 1048 1043 981 52.139303 46.771300 43.814203
#4  571  672 843 28.407960 30.134529 37.650737
#5   93  125  94  4.626866  5.605381  4.198303

相关内容

  • 没有找到相关文章

最新更新