我有一个看起来像这样的data.frame:
> dat <- data.frame(Operation = c("Login", "Posted", "Deleted"), `Total Count` = c(5, 25, 40), check.names = FALSE)
> dat
Operation Total Count
1 Login 5
2 Posted 25
3 Deleted 40
我想计算每个操作的百分比,例如,操作的百分比是Login
。我希望得到一个结果:
Operation Total Count Percentage
1 Login 5 0.07142857
2 Posted 25 0.35714286
3 Deleted 40 0.57142857
由于已经汇总了计数,table()
不起作用:
> table(dat$`Total Count`)
5 25 40
1 1 1
答案 0 :(得分:18)
致电您的专栏Total.Count
而不是Total Count
;名字中的空格不能很好地运作。
如果您的数据位于名为my.df
:
my.df$Pct <- my.df$Total.Count / sum(my.df$Total.Count)
my.df
## Operation Total.Count Pct
## 1 Login 5 0.07142857
## 2 Posted 25 0.35714286
## 3 Deleted 40 0.57142857
答案 1 :(得分:16)
您可以使用函数prop.table()
来计算百分比(假设列名为TotalCount
)。
df$percent<- prop.table(df$TotalCount)
df
Operation TotalCount percent
1 Login 5 0.07142857
2 Posted 25 0.35714286
3 Deleted 40 0.57142857
答案 2 :(得分:5)
如果您想使用dplyr
:
dat %>%
mutate(Percent = TotalCount / sum(TotalCount))
请注意,我将列名更改为TotalCount
,没有空格。