我从唱片网站上删除了一些数据,以制作Aerosmith歌曲类别的信息图表。数据集有一个歌曲变量,其中包含许多随机/不需要的字符,一些标点符号和一些行在列中有多首歌曲。
我尝试在没有任何地方的情况下,使用矢量' y'循环播放歌曲,找到大概匹配并将值替换为匹配' y'。我不确定for循环是否是最佳方法,而且基本上我处于停滞状态。
下面的代码是一个可重现的数据集,以及我用来搜索和替换的代码。
y <- c('Eat the Rich','Cry\'n','Dream On','Crazy')
set.seed(123)
alpha <- data_frame(
songs= paste0(sample(c('walkthisway','adfkbjf','dudelookslikealady','cryn','eattherich'),100,replace=T),sample(c('aadfa','aghnds','crazy','wwrrsdg'),100,replace=T)),
album=sample(c('Toys in the Attic','Get a Grip','Greatest Hits'),100,replace=T))
alpha %>% head()
这是我用代码制作的进展,它似乎适用于向量&#39; y&#39;只包含1个值。
alpha[[i]][agrepl(y,alpha[[i]])] <- y
答案 0 :(得分:1)
需要什么: - )
# Remove special characters
# In this case " " and "'"
foo <- gsub(" |'", "" , y)
# Transform to lower case
foo <- tolower(foo)
for(i in foo) {
# Get original song name
bar <- y[which(foo == i)]
# Find matches and replace with original song
alpha$songs[grep(i, alpha$songs)] <- bar
}