这是我的data.frame
no string
1 abc&URL_drf
2 abcdef&URL_efg
我需要将*&URL
替换为""
。所以,我需要一个结果
no string
1 _drf
2 _efg
如果是Excel,我可以使用'*&URL'
在'查找和替换'中轻松制作此结果。功能。
但是,我无法在R中寻找有效的方法。
在R中,我的方法如下。
首先,我使用strsplit(df$string, "&URL")
分割字符串然后选择了第二列。我认为这不是一种有效的方式。
有没有有效的方法?
答案 0 :(得分:3)
# data
df <- read.table(text="no string
1 abc&URL_drf
2 abcdef&URL_efg", header=T, as.is=T)
# `gsub` function is to substitute the unwanted string with nothing,
# thus the `""`. The pattern of unwanted string was written in
# regular expressions.
df$string <- gsub("[a-z]+(&URL)", "", df$string)
# you get
no string
1 1 _drf
2 2 _efg
答案 1 :(得分:0)
我建议你使用grep功能。
grep函数将正则表达式作为第一个参数,输入向量作为第二个参数。如果传递value = TRUE,则grep返回一个向量,其中包含输入向量中实际元素的副本(可以是匹配。
所以在你的情况下
grep("[a-z]+(&URL)", df$col, perl=TRUE, value=TRUE)
答案 2 :(得分:0)
另一种方法:
df <- transform(df, string = sub(".*&URL", "", string))
# no string
# 1 1 _drf
# 2 2 _efg