以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