我正在使用rvest解析多个html文件,以生成一个数据框,其中一列表示文本正文,另一列表示日期。我遇到的问题是,虽然日期的位置在文件之间是一致的,但文本正文却不是。结果是一个数据框具有不一致的文本列(文章正文和标题的混合)和一致的年份列,以及一个不等长的列表,其中包含我想要替换的“缺失”数据。
这是我所拥有的简化:
df <- data.frame(text=c("body1", "title1", "body3", "body4", "title2"),
year=c("2016", "2016", "2016", "2017", "2017"))
missing <- list(c("body2", "body5"))
列表中元素的顺序对应于我希望它们替换数据帧中不需要的值的顺序。因此,我想识别以字符串“title”开头的text列中的每个值,并按顺序将其替换为“missing”文本。我正在寻找的结果将是这样的:
> df
text year
1 body1 2016
2 body2 2016
3 body3 2016
4 body4 2017
5 body5 2017
我可以使用以下内容轻松识别要替换的值:
df$text[grep("title",df$text)] <- NA
但是如何以正确的顺序填充这些值是我迷路的地方。我尝试了以下操作,用列表中的所有值替换了NA:
> df$text <- as.character(df$text)
> df$text[is.na(df$text)] <- missing
> df
text year
1 body1 2016
2 body2, body5 2016
3 body3 2016
4 body4 2017
5 body2, body5 2017
我不确定下一步是什么,感谢任何帮助。
答案 0 :(得分:0)
首先,您的v
列似乎是一个因素,而不是一个字符。所以转换如下:
text
现在应该可以了:
df$text = as.character(df$text)