R 删除数据列中不包含';不匹配列表的任何部分?
我有一个数据框,其中有一列歌曲标题、标签信息和其他凌乱的字符串数据。我还有一个特定歌曲标题的独立载体。我想从歌曲标题中过滤掉所有不匹配的角色。我正在使用类似的东西,但是显示错误R 删除数据列中不包含';不匹配列表的任何部分?,r,vector,indexing,replace,R,Vector,Indexing,Replace,我有一个数据框,其中有一列歌曲标题、标签信息和其他凌乱的字符串数据。我还有一个特定歌曲标题的独立载体。我想从歌曲标题中过滤掉所有不匹配的角色。我正在使用类似的东西,但是显示错误 song.list <- c("Song.1","Song.2", "Song.3") Mydata$Songs <- My data column containing all sorts of things including the songs I'm after levels(Mydata$Son
song.list <- c("Song.1","Song.2", "Song.3")
Mydata$Songs <- My data column containing all sorts of things including the songs I'm after
levels(Mydata$Songs)[(Mydata$Songs) %in% song.list] <- "" #I'd like the opposite of this
levels(Mydata$Songs)![(Mydata$Songs) %in% song.list] <- ""#My use of '!' doesn't work
song.list我还没能想出一个矢量化的解决方案,但是如果我理解正确的话,这个因子级别的循环应该可以完成这项工作:
library(stringr)
for (level in levels(df$A)) {
match <- na.omit(str_extract(level, song.list))
if (length(match) > 0) {
levels(df$A)[levels(df$A) == level] <- match
}
}
库(stringr)
用于(级别中的级别(df$A)){
匹配0){
级别(df$A)[levels(df$A)=level]你把!
放错地方了![!(Mydata$Songs)%in%song.list]
。你好,Oriol,谢谢。这与我想做的很接近,但我想过滤掉字符串中与歌曲列表不匹配的部分。基本上,我正在尝试从混乱的字符串列中提取歌曲。你能给我举一个例子说明几行Mydata$songs
的内容吗?有了这些信息,我应该是嗨,奥利奥,这是数据列第一行所包含内容的一个示例:[1]Walkin'Blues(如R.Johnson)\n\n\n生皮-\n\n 1987-1991年各类录音棚录音(CDr,Comp,Ltd)我想推出像“Walkin Blues”这样的歌曲。每一行包含不同的歌曲和其他字符串数据。我在答案中添加了一个新的尝试来解决此问题。如果有任何问题,请告诉我。嗨,Oriol,谢谢。这似乎效果很好。我正在尝试做类似的事情,但我没有成功。谢谢你的帮助;我为你的答案添加了一个“检查”。
levels(Mydata$Songs)[!Mydata$Songs %in% song.list] <- ""