我是dplyr的新手,正在try 进行以下转换,但没有任何运气.我在互联网上搜索过,在ddply中也找到了类似的例子,但我想使用dplyr.

我有以下数据:

   month   type  count
1  Feb-14  bbb   341
2  Feb-14  ccc   527
3  Feb-14  aaa  2674
4  Mar-14  bbb   811
5  Mar-14  ccc  1045
6  Mar-14  aaa  4417
7  Apr-14  bbb  1178
8  Apr-14  ccc  1192
9  Apr-14  aaa  4793
10 May-14  bbb   916
..    ...  ...   ...

我想用dplyr来计算每个月级别的每种类型(aaa、bbb、ccc)的百分比,即.

   month   type  count  per
1  Feb-14  bbb   341    9.6%
2  Feb-14  ccc   527    14.87%
3  Feb-14  aaa  2674    ..
..    ...  ...   ...

我试过了

data %>%
  group_by(month, type) %>%
  summarise(count / sum(count))

每个值都是1.我如何计算一个月内所有类型的总和?

推荐答案

try

library(dplyr)
data %>%
    group_by(month) %>%
    mutate(countT= sum(count)) %>%
    group_by(type, add=TRUE) %>%
    mutate(per=paste0(round(100*count/countT,2),'%'))

或者在不创建其他列的情况下使其更简单

data %>%
    group_by(month) %>%
    mutate(per =  100 *count/sum(count)) %>% 
    ungroup

我们也可以在"月"总结sum(count)之后使用left_join

或者使用data.table的选项.

 library(data.table)
 setkey(setDT(data), month)[data[, list(count=sum(count)), month], 
               per:= paste0(round(100*count/i.count,2), '%')][]

R相关问答推荐

如何向使用plot_smooths()函数显示的GAM结果图表中添加点?

为什么t使用ifelse()基于两个DF中的匹配观察创建新列不适用于此数据?

如何计算具有NA的行的更改百分比

如何判断R中一列的值是否在所有其他列中重复?

如何在弹性表中为类别值的背景上色

在边界外添加注释或标题

如果列中存在相同的字符串,则对行值进行总和

为什么st_join(ob1,ob2,left = True)返回具有比ob1更多功能的sf对象?

R等效于LABpascal(n,1)不同的列符号

咕噜中的元素列表:map

R Tidymodels textercipes-使用spacyR进行标记化-如何从生成的标记列表中删除标点符号

有没有一个R函数允许你从一个数字变量中提取一个数字,而不考虑它的位置(不仅仅是第一个或最后一个数字?

derrr summarise每个组返回多行?

然后根据不同的列值有条件地执行函数

当我们有多个特殊字符时,使用gsub删除名称和代码'

R如何计算现有行的总和以添加新的数据行

有没有可能用shiny 的书签恢复手风琴面板?

有没有办法定制Plot(allEffects())面板标题?

层次树图的数据树

在r中整理图例和堆叠图的问题