RStudio中的字符串匹配
我遇到以下情况的问题。我有一个数据帧df,在var1中有多个单词字符串。我只想保留var1中的单词,如果该单词在chr中。例如,var1的第一行有汽车电视狗,我想删除单词dog,因为它不在chr中 我的数据帧:RStudio中的字符串匹配,r,string,R,String,我遇到以下情况的问题。我有一个数据帧df,在var1中有多个单词字符串。我只想保留var1中的单词,如果该单词在chr中。例如,var1的第一行有汽车电视狗,我想删除单词dog,因为它不在chr中 我的数据帧: id <- c(1,2,3) var1 <- c("car tv dog","cat water mouse","pen wire fish") df <- data.frame(id,var1) 我想保留的话: chr<-"car aaa bbb ccc dd
id <- c(1,2,3)
var1 <- c("car tv dog","cat water mouse","pen wire fish")
df <- data.frame(id,var1)
我想保留的话:
chr<-"car aaa bbb ccc ddd qqq www eee rrr pen cat ttt fish tv"
预期结果:
want <- c("car tv","cat","pen fish")
dfWant <- data.frame(id, var1, want)
非常感谢您的帮助。代码:
# example data
df <- data.frame(
id = 1:3,
var1 = c("car tv dog", "cat water mouse", "pen wire fish"),
stringsAsFactors = FALSE
)
# strings to search for (save each word as an element of a vector)
chr <- "car aaa bbb ccc ddd qqq www eee rrr pen cat ttt fish tv"
chr_vec <- unique(unlist(strsplit(chr, " ")))
# split var1 into words, check if word is in chr_vec,
# keep only if true, re-combine into multi-word string
df$result <- unlist(lapply(strsplit(df$var1, " "), function(x) paste(x[x %in% chr_vec], collapse = " ")))
欢迎来到StackOverflow!请阅读相关信息以及如何给出建议。这将使其他人更容易帮助您。我不明白您希望如何创建第二个数据帧。模式是什么?还有,chr在做什么?这很不清楚。记住,读到这个问题的人并不像你那样沉浸在问题中。解释一下,就好像我们还不知道你想做什么一样。对不起,我应该说得更具体一些。want列是字符串chr和Var1的交点。也就是说,对于第一排,car和tv在字符串chr中存在,而dog不存在。我通常和你@RichScriven在一起,但由于他开始评论而不是编辑,我认为编辑的缺乏开始让他赢得了反对票,所以我就这样做了。
> df
id var1 result
1 1 car tv dog car tv
2 2 cat water mouse cat
3 3 pen wire fish pen fish