Используя функцию 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
Отвечает ли он на ваш вопрос?