使用apply函数,你可以做到:
apply(df,2, function(x) x/sum(x)*100)
在这里,我创建了这个虚拟示例来说明它是如何工作的:
df <- data.frame(C1 = sample(1:100,5),
C2 = sample(1:100,5),
C3 = sample(1:100,5))
apply(df,2, function(x) x/sum(x)*100)
C1 C2 C3
[1,] 32.903226 13.861386 19.59799
[2,] 27.096774 1.980198 16.33166
[3,] 3.870968 44.554455 17.58794
[4,] 15.483871 17.821782 21.85930
[5,] 20.645161 21.782178 24.62312
使用dplyr包,你可以使用mutate_all得到相同的输出:
library(dplyr)
df %>% mutate_all(.funs = ~./sum(.)*100)
C1 C2 C3
1 32.903226 13.861386 19.59799
2 27.096774 1.980198 16.33166
3 3.870968 44.554455 17.58794
4 15.483871 17.821782 21.85930
5 20.645161 21.782178 24.62312
它回答了你的问题吗?