我有data.table
列
V1
a_b_c_las_poi
a_b_c_kiosk_pran
a_b_c_qwer_ok
我想在此data.table
中添加一个新列,其中不包含“_”后面的字符串的最后一部分。
更新
所以我希望输出为
a_b_c_las
a_b_c_kiosk
a_b_c_qwer
答案 0 :(得分:1)
您可以使用sub
和正则表达式执行此操作。
sub("(.*)_.*", "\\1", V1)
[1] "a_b_c_las" "a_b_c_kiosk" "a_b_c_qwer"
答案 1 :(得分:1)
如果k
是要保留的字段数:
k <- 2
DT[, V1 := do.call(paste, c(read.table(text=V1, fill=TRUE, sep="_")[1:k], sep = "_"))]
如果所有行具有相同数量的字段,则可以省略 fill=TRUE
。
注意: DT
的可重现形式为:
library(data.table)
DF <- data.frame(V1 = c("a_b_c_las_poi", "a_b_c_kiosk_pran", "a_b_c_qwer_ok"),
stringsAsFactors = FALSE)
DT <- as.data.table(DF)