data.table 按索引粘贴选定的列
data.table paste selected columns by index
我有一个data.table如下
DT <- structure(list(V1 = structure(1:3, .Label = c("S01", "S02", "S03"), class = "factor"), V2 = structure(c(1L, 3L, 2L), .Label = c("Alan", "Bruce", "Jay"), class = "factor"), V3 = structure(c(3L, 1L, 2L), .Label = c("Barry", "Dick", "Hal"), class = "factor"), V4 = structure(c(1L, 3L, 2L), .Label = c("Guy", "Jean-Paul", "Wally"), class = "factor"), V5 = structure(c(3L, 1L, 2L), .Label = c("Bart", "Damien", "John"), class = "factor")), .Names = c("V1", "V2", "V3", "V4", "V5"), class = "data.frame", row.names = c(NA, -3L))
setDT(DT)
setkey(DT, V1)
我正在尝试将 DT
中的选定列 (selcol
) 粘贴到新列中。
selcol = c("V3", "V4")
我知道 DT[, "NEW" := paste0(V3, V4), with = FALSE]
可以解决问题。但是我想在代码中使用selcol
。
我试过以下方法
DT[, "NEW" := paste0(which(colnames(DT) %in% selcol)), with = TRUE]
DT[, "NEW" := paste0(which(colnames(DT) %in% selcol)), with = TRUE]
DT[, "NEW" := paste0(3, 4), with = TRUE]
DT[, "NEW" := paste(3, 4), with = TRUE]
如何使用 data.table
执行此操作。
DT[, NEW := do.call(paste0, .SD), .SDcols = selcol]
# V1 V2 V3 V4 V5 NEW
#1: S01 Alan Hal Guy John HalGuy
#2: S02 Jay Barry Wally Bart BarryWally
#3: S03 Bruce Dick Jean-Paul Damien DickJean-Paul
我有一个data.table如下
DT <- structure(list(V1 = structure(1:3, .Label = c("S01", "S02", "S03"), class = "factor"), V2 = structure(c(1L, 3L, 2L), .Label = c("Alan", "Bruce", "Jay"), class = "factor"), V3 = structure(c(3L, 1L, 2L), .Label = c("Barry", "Dick", "Hal"), class = "factor"), V4 = structure(c(1L, 3L, 2L), .Label = c("Guy", "Jean-Paul", "Wally"), class = "factor"), V5 = structure(c(3L, 1L, 2L), .Label = c("Bart", "Damien", "John"), class = "factor")), .Names = c("V1", "V2", "V3", "V4", "V5"), class = "data.frame", row.names = c(NA, -3L))
setDT(DT)
setkey(DT, V1)
我正在尝试将 DT
中的选定列 (selcol
) 粘贴到新列中。
selcol = c("V3", "V4")
我知道 DT[, "NEW" := paste0(V3, V4), with = FALSE]
可以解决问题。但是我想在代码中使用selcol
。
我试过以下方法
DT[, "NEW" := paste0(which(colnames(DT) %in% selcol)), with = TRUE]
DT[, "NEW" := paste0(which(colnames(DT) %in% selcol)), with = TRUE]
DT[, "NEW" := paste0(3, 4), with = TRUE]
DT[, "NEW" := paste(3, 4), with = TRUE]
如何使用 data.table
执行此操作。
DT[, NEW := do.call(paste0, .SD), .SDcols = selcol]
# V1 V2 V3 V4 V5 NEW
#1: S01 Alan Hal Guy John HalGuy
#2: S02 Jay Barry Wally Bart BarryWally
#3: S03 Bruce Dick Jean-Paul Damien DickJean-Paul