我需要根据另一个表中的列名称填充新 data.table 中的列。
在一个表中,列名称 a、b、c 在第二个表中是名称 a_1、a_2、b_2、b_1 ...我需要用第一个表中的值填充第二个表中的所有列,并将相同的数据放入包含 a 或 的所有列列名称中的 b 或(全部相同部分)。
你是这个意思吗?
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")))