【问题标题】:R data table -- create a variable sequenced conditional by other variableR数据表-创建一个由其他变量条件排序的变量
【发布时间】:2021-12-09 10:18:17
【问题描述】:

我对 R 和数据表比较陌生,我认为我所要求的应该不会太难。

我有一些数据:

test <- data.table(x=(0:5))
test2 <- data.table(x=(0:2))
test3 <- data.table(x=(0:4))

data <- rbind(test, test2, test3)

我最终想创建一个新变量作为我的分组变量,使用这个数据集,我最终会得到 3 个组。第一组是 0 到 5 的值,第二组是 0 到 1 的值,第三组是 0 到 4 的值。换句话说,每当我的原始列“x”中有一个 0 时,我想要开始一个新的小组。这些分组变量将是数字:1、2、3。

我试过了:

data <- data[, grouping_variable := sequence(.N), by=c("x")]

你会看到它很接近,但它并不完全正确。任何帮助表示赞赏!!!

【问题讨论】:

  • 可能类似于data[, g := cumsum(x==0L)]
  • @chinsoon12,也许将其作为答案发布?
  • @chinsoon12,就是这个!!哇,太疯狂了,我花了 4 个小时试图解决这个问题,我一直在寻找这么简单的代码行。非常感谢!!

标签: r data.table


【解决方案1】:

改成:

test <- data.table(x=(0:5))
test2 <- data.table(x=(0:2))
test3 <- data.table(x=(0:4))

data <- list(test, test2, test3)
rbindlist(data,idcol = 'id')
    id x
 1:  1 0
 2:  1 1
 3:  1 2
 4:  1 3
 5:  1 4
 6:  1 5
 7:  2 0
 8:  2 1
 9:  2 2
10:  3 0
11:  3 1
12:  3 2
13:  3 3
14:  3 4

【讨论】:

  • 感谢@onyambu 的参与。我的示例数据只是为了便于描述问题。不幸的是,我正在使用的数据集大约有 100k 行,而且我不是自己构建的。否则,您评论的内容将起作用。
  • 你想如何创建分组变量??
猜你喜欢
  • 2022-07-15
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
  • 2011-02-26
相关资源
最近更新 更多