Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 选择字符串中特定字符数之后的部分_R_Data.table - Fatal编程技术网

R 选择字符串中特定字符数之后的部分

R 选择字符串中特定字符数之后的部分,r,data.table,R,Data.table,我有一个带有列的数据表 V1 a_b_c_las_poi a_b_c_kiosk_pran a_b_c_qwer_ok 我想在这个数据表中添加一个新的列,它不包括字符串的最后一部分 更新 所以我希望输出是 a_b_c_las a_b_c_亭 a_b_c_qwer您可以使用sub和正则表达式来完成此操作 sub("(.*)_.*", "\\1", V1) [1] "a_b_c_las" "a_b_c_kiosk" "a_b_c_qwer" 您可以使用sub和正则表达式执行此操作 su

我有一个带有列的
数据表

V1
a_b_c_las_poi 
a_b_c_kiosk_pran 
a_b_c_qwer_ok
我想在这个
数据表中添加一个新的列,它不包括字符串的最后一部分

更新

所以我希望输出是

a_b_c_las
a_b_c_亭

a_b_c_qwer

您可以使用
sub
和正则表达式来完成此操作

sub("(.*)_.*", "\\1", V1)
[1] "a_b_c_las"   "a_b_c_kiosk" "a_b_c_qwer" 

您可以使用
sub
和正则表达式执行此操作

sub("(.*)_.*", "\\1", V1)
[1] "a_b_c_las"   "a_b_c_kiosk" "a_b_c_qwer" 

如果
k
是要保留的字段数:

k <- 2
DT[, V1 := do.call(paste, c(read.table(text=V1, fill=TRUE, sep="_")[1:k], sep = "_"))]

如果
k
是要保留的字段数:

k <- 2
DT[, V1 := do.call(paste, c(read.table(text=V1, fill=TRUE, sep="_")[1:k], sep = "_"))]

在第一个“或最后一个”之后。如果您在此处给出所需的输出,这将非常有用。在第一个“”或最后一个“”之后。如果您在这里给出所需的输出,这将非常有用。非常好的通用解决方案。真的很有帮助。谢谢你,非常好的通用解决方案。真的很有帮助。非常感谢。