【问题标题】:cumulatively concatenate columns in data.table by group [duplicate]按组累积连接data.table中的列[重复]
【发布时间】:2018-10-31 00:24:17
【问题描述】:

我有一个如下的 data.table:

x <- data.table(group = c('A', 'A', 'A', 'B', 'B'),
                row_id = c(1, 2, 3, 1, 2),
                value = c('a', 'b', 'c', 'd', 'e'))

我想在“group”指示的每个组中添加一个新列,该列累积连接按“row_id”排序的列“value”。所以输出看起来像:

   group row_id value
1:     A      1     a
2:     A      2   a_b
3:     A      3 a_b_c
4:     B      1     d
5:     B      2   d_e

感谢您的帮助!

【问题讨论】:

  • 链接中有几个备选方案。 This和下面贴的基本一样。

标签: r data.table


【解决方案1】:

一种选择是按“组”分组,遍历行序列,获取它的序列,将其用作索引以获取相应的“值”和paste与分隔符_,分配(:=) 它来更新'值'

x[, value := sapply(seq_len(.N), function(i) 
     paste(value[seq(i)], collapse = "_")), by = group]
x
#   group row_id value
#1:     A      1     a
#2:     A      2   a_b
#3:     A      3 a_b_c
#4:     B      1     d
#5:     B      2   d_e

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 2019-02-24
    • 2016-08-28
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多