R - 根据当前行和其他行中的值向数据框添加计数

标签 r dataframe

我有一个如下所示的数据框(可能不会这样排序):

  Group Value
  A     1
  A     5
  A     6
  A     11
  B     3
  B     4
  B     5
  B     10

现在我想要一个新列来计算每个组中有多少行的值落在每行值的固定范围内(假设对于这个例子,它必须比当前值小 2行的值和实际值,包括在内)。所以结果会是

  Group Value New Count
  A     1     1 (because there is only 1 row in Group A between -1 and 1, this row)
  A     5     1 (because there is only 1 row in Group A between 3 and 5, this row)
  A     6     2 (because there are 2 rows in Group A between 4 and 6)..and so on
  A     11    1
  B     3     1
  B     4     2
  B     5     3
  B     10    1

我已经看到了一些关于在一个组内运行总计数器等的答案,但是我在搜索 SO 时没有遇到这种情况......

最佳答案

另一种方法是使用非相等连接并根据连接条件分组:

library(data.table)
setDT(DF)[, New.Count := .SD[.(Group = Group, V1 = Value, V2 = Value - delta), 
                             on = .(Group, Value <= V1, Value >= V2), .N, by = .EACHI]$N][]
   Group Value New.Count
1:     A     1         1
2:     A     5         1
3:     A     6         2
4:     A    11         1
5:     B     3         1
6:     B     4         2
7:     B     5         3
8:     B    10         1

数据

library(data.table)
DF <- fread(
  "  Group Value
  A     1
  A     5
  A     6
  A     11
  B     3
  B     4
  B     5
  B     10"
)

关于R - 根据当前行和其他行中的值向数据框添加计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47195329/

相关文章:

r - 在 R 数据框中查找整行?

python(pandas)在数据帧内合并,无需for循环

regex - 将列拆分为多列 R

css - Rmarkdown 生成的 HTML 表格出现颜色问题

r - ggplot2 是否使用/继承了 R 基本图形中的一些参数?

r - 从单独列的单词元素创建列

python - 使用 python pandas 注意(保存)dataset_a 和 dataset_b 的不匹配条目

r - 如何根据 R 中另一列中的字符创建二进制列?

R比例置信区间因子

javascript - 为使用模块命名空间的 R Shiny 模块编写自定义 JavaScript 的最佳方法是什么?