在R中将数据从一列拆分为不同的列
“我在R中执行了刮取,但在将数据拆分为不同列时遇到了问题。我无法为第8:10列(代码的最后一行)编写代码。下面是代码”在R中将数据从一列拆分为不同的列,r,regex,web-scraping,split,R,Regex,Web Scraping,Split,“我在R中执行了刮取,但在将数据拆分为不同列时遇到了问题。我无法为第8:10列(代码的最后一行)编写代码。下面是代码” 库(xml2) 图书馆(rvest) 图书馆(stringr) 图书馆(tidyr) reddit_wbpg% html_text() 评论% html_节点(“q.location-review-review-list-parts-ExpandableReview_uuReviewText--gOmRC”)%>% html_text() 用户数据1% html_节点(“div
库(xml2)
图书馆(rvest)
图书馆(stringr)
图书馆(tidyr)
reddit_wbpg%
html_text()
评论%
html_节点(“q.location-review-review-list-parts-ExpandableReview_uuReviewText--gOmRC”)%>%
html_text()
用户数据1%
html_节点(“div.social-member-event-MemberEventOnObjectBlock_uu事件类型--3njyv”)%>%
html_text()
用户数据2%
html_节点(“div.social-member-MemberHeaderStats_u事件信息--30wFs”)%>%
html_text()
审查标题%
html_节点(“div.location-review-review-list-parts-ReviewTitle_uureviewtitle--2GO9Z”)%>%
html_text()
刮取数据这里有一种方法使用str\u extract
同时使用正向和反向前瞻:
scraping_data[,8] <- str_extract(scraping_data$user_data2,"^(?![0-9]+ (con|hel)).+?(?=[0-9]+ (con|hel)|$)")
scraping_data[,9] <- str_extract(scraping_data$user_data2,"[0-9]+(?= contribution)")
scraping_data[,10] <- str_extract(scraping_data$user_data2,"[0-9]+(?= helpful vote)")
scraping_data
# user_data1 user_data2 user_name date location contribution helpful_votes
#1 mohd saqibsaqib wrote a review Mar 2020 2 contributions2 helpful votes a a <NA> 2 2
#2 hitesh k wrote a review Mar 2020 4 contributions1 helpful vote a a <NA> 4 1
#3 Basant wrote a review Mar 2020 2 contributions a a <NA> 2 <NA>
#4 RagP65 wrote a review Mar 2020 New Delhi, India9 contributions4 helpful votes a a New Delhi, India 9 4
#5 Mbosma wrote a review Mar 2020 2 contributions a a <NA> 2 <NA>
每个r
标签(悬停或单击查看)的scraping_数据[,8]:请随所需输出一起提供。对数据使用dput()
,并使用library()
调用指定所有非基本包。另外,不要使用。90%的工作看起来已经完成。谢谢仍然存在一些错误。1) 在第4行中,1个贡献没有被捕获(代码仅用于贡献,需要添加贡献。2)我正在对多个页面进行抓取。我这样做是为了另一页,在这种情况下,第1行没有正确地拆分。请提供帮助。我编辑了我的答案,通过删除前瞻中的s
来修复问题1。对于第2期,请使用可复制的问题示例编辑您的问题。我已按照建议对代码进行了编辑,并附上了一张快照供您参考。我已编辑了我的答案以说明问题。如果一个答案对你有用,请考虑点击左边的检查标记和/或对它进行投票。非常感谢。我感谢你的帮助。
scraping_data[,8] <- str_extract(scraping_data$user_data2,"^(?![0-9]+ (con|hel)).+?(?=[0-9]+ (con|hel)|$)")
scraping_data[,9] <- str_extract(scraping_data$user_data2,"[0-9]+(?= contribution)")
scraping_data[,10] <- str_extract(scraping_data$user_data2,"[0-9]+(?= helpful vote)")
scraping_data
# user_data1 user_data2 user_name date location contribution helpful_votes
#1 mohd saqibsaqib wrote a review Mar 2020 2 contributions2 helpful votes a a <NA> 2 2
#2 hitesh k wrote a review Mar 2020 4 contributions1 helpful vote a a <NA> 4 1
#3 Basant wrote a review Mar 2020 2 contributions a a <NA> 2 <NA>
#4 RagP65 wrote a review Mar 2020 New Delhi, India9 contributions4 helpful votes a a New Delhi, India 9 4
#5 Mbosma wrote a review Mar 2020 2 contributions a a <NA> 2 <NA>