我有imdb.csv数据集,我想在不同的列中将标题与年份分开。问题是,在某些情况下,标题以“\”结尾,在这些情况下,标题继续到下一列。有什么方法可以将年份和年份之前的字符串分开?
正如你所看到的,在某些行中,标题甚至会继续显示为url列。解决这个问题的最好方法是什么?
下面是我尝试将该列的每个条目移动到前一列的代码(以防标题条目以“\”结尾)。
for(i in 3:ncol(imdb)) {
if(str_detect(imdb$title, "\\\\$")) {
title <- substr(x = imdb$title, start = 1,
stop = nchar(as.character(imdb$title))-1)
title <- paste(title, imdb[i], sep = "")
}}
imdb$title <- title
for (i in 3:(ncol(imdb))-1) {
imdb[, i] = imdb[, i+1]
}
但是代码会发出一个警告:
In if (str_detect(title, "\\\\$")) { ... :
the condition has length > 1 and only the first element will be used
这是否意味着if只能用于一个字符串,而不能用于列?我试图将它封装到for cycle中,但还是出现了一些错误。
发布于 2020-04-20 22:00:15
不确定这是否有帮助,但将完整的字符串粘贴在一起,然后提取年份可能会更好:
library(stringr)
test <- c("aaa hh \\ hhf \\(1984)", "aaad \\(1234)")
str_extract(test, "(\\d{4})")
[1] "1984" "1234"
同样,可以使用gsub删除原始字符串中的年份。
https://stackoverflow.com/questions/61322406
复制相似问题