【问题标题】:Create a new column for data-table based on filtered value根据过滤值为数据表创建一个新列
【发布时间】:2020-02-14 11:42:57
【问题描述】:

我想过滤一列,同时根据早期子集上其他列的值为现有 创建一个新列。下面是这样一个例子 -

library(data.table)
X <- data.table(id = 1:5, L = letters[1:5])
X[id > 2, 'ss' := paste(id, L)]
X
   id L   ss
1:  1 a <NA>
2:  2 b <NA>
3:  3 c  3 c
4:  4 d  4 d
5:  5 e  5 e

但是,如您所见,这不是返回子集,即行号 35,而是返回整个数据表。任何指向正确和有效方法的指针都将受到高度赞赏。

【问题讨论】:

    标签: data.table r data.table data-manipulation


    【解决方案1】:

    或许,您可以单独应用它们。

    library(data.table)
    
    Y <- X[id > 2][,ss := paste(id, L)]
    Y
    #   id L  ss
    #1:  3 c 3 c
    #2:  4 d 4 d
    #3:  5 e 5 e
    

    您可以将 na.omit 包装到您尝试删除 NA 值的过程中

    na.omit(X[id > 2, 'ss' := paste(id, L)])
    

    或再次子集

    X[id > 2, 'ss' := paste(id, L)][id > 2]
    

    【讨论】:

      猜你喜欢
      • 2019-01-20
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      • 2020-07-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多