以dplyr计算时按和百分比分组?

以dplyr计算时按和百分比分组?,r,dataframe,dplyr,R,Dataframe,Dplyr,我需要有一个表作为结果,其中包含有关人员及其百分比的数据。在这里,你可以看到一个例子,它可能看起来像 person percentage aa 17.04 bb 89.03 cc 67.99 dd 38.88 我的数据集如下所示: person points aa 134 bb 234 cc 121 dd 134 我的代码是: df$points/187*100 但我得到的结果只是百分比,而不是个人数据。更好的

我需要有一个表作为结果,其中包含有关人员及其百分比的数据。在这里,你可以看到一个例子,它可能看起来像

person   percentage
aa      17.04
bb      89.03
cc      67.99
dd      38.88
我的数据集如下所示:

person points
aa     134
bb     234
cc     121
dd     134
我的代码是:

  df$points/187*100

但我得到的结果只是百分比,而不是个人数据。更好的解决方法是什么?

为了将计算结果写入数据框,可以使用赋值运算符假设您要计算每个人的分数的百分比,其中187分等于100%,与@Len Greski的答案相反:

library(dplyr)
df <- df %>% mutate(percentage = points/1.87)

df$您的编辑是对问题可能解决方案的一个很好的解释。对我来说,dplyr最大的优点之一就是代码可读性。因此,就我个人而言,我喜欢将MagGritter管道用于应用于数据帧的所有转换。这样,就很容易在代码的开头看到要操作的数据
textFile <- "person points
aa     134
bb     234
cc     121
dd     134"

df <- read.table(text=textFile,header=TRUE)

df$pct <- df$points/sum(df$points)*100

df
sum(df$pct)  
  person points      pct
1     aa    134 21.50883
2     bb    234 37.56019
3     cc    121 19.42215
4     dd    134 21.50883

> sum(df$pct)
[1] 100
 df$points_rate <- df$points/187*100
 df
> df$points_rate <- df$points/187*100
> df
  person points      pct points_rate
1     aa    134 21.50883    71.65775
2     bb    234 37.56019   125.13369
3     cc    121 19.42215    64.70588
4     dd    134 21.50883    71.65775
library(dplyr)

df <- mutate(df,pct = points / 187 * 100,
             points_rate = points / sum(points) * 100)

df
> df
  person points       pct points_rate
1     aa    134  71.65775    21.50883
2     bb    234 125.13369    37.56019
3     cc    121  64.70588    19.42215
4     dd    134  71.65775    21.50883
library(dplyr)
df <- df %>% mutate(percentage = points/1.87)
  person points percentage
1     aa    134   71.65775
2     bb    234  125.13369
3     cc    121   64.70588
4     dd    134   71.65775