Как я могу добавить столбец porcentaje на основе другого столбца в моем фрейме данных?

#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. хорошо, спасибо, мастер!