r - 如何使用 dplyr 按因子操作 data.frame

标签 r dataframe dplyr

df <- data.frame(a=factor(c(1,1,2,2,3,3) ), b=c(1,1, 10,10, 20,20) )

  a  b
1 1  1
2 1  1
3 2 10
4 2 10
5 3 20
6 3 20

我想按a列拆分数据框,计算每组的b/sum(b),并将结果放在c列。使用 plyr 我可以做到:

fun <- function(x){
  x$c=x$b/sum(x$b)
  x
} 
ddply(df, .(a), fun )

  a  b   c
1 1  1 0.5
2 1  1 0.5
3 2 10 0.5
4 2 10 0.5
5 3 20 0.5
6 3 20 0.5

但是我怎样才能用 dplyr 做到这一点呢?

df %.% group_by(a) %.% do(fun)

返回列表而不是数据框。

最佳答案

df %>%
  group_by(a) %>%
  mutate(c=b/sum(b))

  a  b   c
1 1  1 0.5
2 1  1 0.5
3 2 10 0.5
4 2 10 0.5
5 3 20 0.5
6 3 20 0.5

关于r - 如何使用 dplyr 按因子操作 data.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23248949/

相关文章:

r - R中更好的字符串插值

python - 如何从 Pandas 数据框中提取索引?

R dplyr 列用字母数字字符排序

R - 在网站上发送搜索请求

r - 对 data.frame 进行子集化时对负索引的解释

javascript - 如果我更改了数字输入的格式, Shiny 的书签不起作用

python - 如何从DataFrame的日期列中提取月份名称和年份

python - 按列轴移动时,Pandas DataFrame.Shift 返回错误结果

r - 计算R中向量中重复数字序列的长度

r - 使用 "{{"运算符通过环境变量隧道数据变量