#r #percentage #mutated
Вопрос:
Я хотел бы создать столбец в своем фрейме данных, в котором будет указан процент каждой категории. Общая сумма (100%) будет суммироваться с оценкой по столбцу.
Мои данные выглядят так
Client Score lt;chrgt; lt;intgt; 1 RP 125 2 DM 30
Ожидаемый
Client Score % lt;chrgt; lt;intgt; 1 RP 125 80.6 2 DM 30 19.3
Спасибо!
Ответ №1:
Обратите внимание, что специальный символ в именах столбцов не подходит.
library(dplyr) df %gt;% mutate(`%` = round(Score/sum(Score, na.rm = TRUE)*100, 1))
Client Score % 1 RP 125 80.6 2 DM 30 19.4
Ответ №2:
Вероятно, лучший способ-использовать dplyr. Я воссоздал ваши данные ниже и использовал функцию mutate для создания нового столбца в фрейме данных.
#Creation of data Client lt;- c("RP","DM") Score lt;- c(125,30) DF lt;- data.frame(Client,Score) DF #install.packages("dplyr") #Remove first # and install if library doesn't load library(dplyr) #If this doesn't run, install library using code above. #Shows new column DF %gt;% mutate("%" = round((Score/sum(Score))*100,1)) #Overwrites dataframe with new column added DF %gt;% mutate("%" = round((Score/sum(Score))*100,1)) -gt; DF
Используя базовые функции R, можно достичь той же цели.
X lt;- round((DF$Score/sum(DF$Score))*100,1) #Creation of percentage DF$"%" lt;- X #Storage of X as % to dataframe DF #Check to see it exists
Ответ №3:
В base R
, может использовать proportions
df[["%"]] lt;- round(proportions(df$Score) * 100, 1)
-выход
gt; df Client Score % 1 RP 125 80.6 2 DM 30 19.4
Комментарии:
1. @TarJae Я вижу там некоторые комментарии от таких легенд, как Фрэнк. Возможно, будет лучше воспользоваться их советом
2. хорошо, спасибо, мастер!