r - R 中分组数据帧中特定行号的总和列

标签 r dataframe dplyr

我有一个像这样的数据框:

df = data.frame(
  x = 1:100,
  y = rep(1:10, times = 10, each = 10)
) %>% 
  group_by(y)

我想计算每组 y 从第 3 行到第 6 行的 x 之和。 我认为这应该很容易,但我现在无法弄清楚。

在伪代码中我想象这样的事情:

df %>% 
  mutate(
    sum(x, ifelse(between(row_number(), 3,6)))
  )

但这当然行不通。我想用一些 dplyr 函数来解决它,但在基础 R 中我想不出快速的解决方案。 对于第一组,总和将为 3+4+5+6....

最佳答案

一种选择可能是:

df %>% 
 group_by(y) %>%
 mutate(z = sum(x[row_number() %in% 3:6]))

       x     y     z
   <int> <int> <int>
 1     1     1    18
 2     2     1    18
 3     3     1    18
 4     4     1    18
 5     5     1    18
 6     6     1    18
 7     7     1    18
 8     8     1    18
 9     9     1    18
10    10     1    18

关于r - R 中分组数据帧中特定行号的总和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67633258/

相关文章:

r - 使用 dplyr 在数据导入中仅保留一个唯一列

r - 随着时间的推移获得累积和

r - 如何在 RStudio 中逐段运行代码?

恢复Rcpp源文件

值列的每次更改 R 递增 1 并重新启动计数器

在 R 中创建数据帧的再现函数 - 可再现代码

r - Shiny :使用不同的变量创建 react 过滤器。

Python pandas 从字符串中删除子字符串之后的部分

r - 根据在列上找到的索引从数据框行中获取变量

scala - 删除 Spark DataFrame 的第一行