在 R data.table 中填充列

Fill column in R data.table

提问人:user22892694 提问时间:11/10/2023 最后编辑:marc_suser22892694 更新时间:11/10/2023 访问量:45

问:

我需要根据另一个列的名称填充新data.table中的列。

在一张表中是列名 a、b、c,第二个是名称 a_1、a_2、b_2、b_1......我需要从第一个表中的值填充第二个表中的所有列,并将相同的数据放入列名中包含 a 或 b 或(所有相同部分)的所有列中。

r 联接 data.table

评论


答:

2赞 r2evans 11/10/2023 #1

你是这个意思吗?

table_1[, setNames(.SD, names(table_2)), .SDcols=sub("_.*", "", names(table_2))]
#     a_52  b_25   c_1   d_k   F_z  a_23  b_28  c_21  d_25  F_25
#    <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
# 1:     1     1     1     1    20     1     1     1     1    20
# 2:     2     2     2     2    21     2     2     2     2    21
# 3:     3     3     3     3    22     3     3     3     3    22
# 4:     4     4     4     4    23     4     4     4     4    23

数据

table_1 <- data.table::as.data.table(structure(list(a = 1:4, b = 1:4, c = 1:4, d = 1:4, F = 20:23), row.names = c(NA, -4L), class = c("data.table", "data.frame")))
table_2 <- data.table::as.data.table(structure(list(a_52 = logical(0), b_25 = logical(0), c_1 = logical(0), d_k = logical(0), F_z = logical(0), a_23 = logical(0), b_28 = logical(0), c_21 = logical(0), d_25 = logical(0), F_25 = logical(0)), row.names = integer(0), class = c("data.table", "data.frame")))