首页 > 解决方案 > 将字符变量分成两列

问题描述

我从 url 中抓取了一些数据来分析骑行结果。不幸的是,在一个字段中存在名称和团队名称的名称列。我想从彼此中提取这些。这是代码(最后一部分不起作用)

#get url
stradebianchi_2020 <- read_html("https://www.procyclingstats.com/race/strade-bianche/2020/result")

#scrape table 
results_2020 <- stradebianchi_2020%>%
  html_nodes("td")%>%
  html_text()

#transpose scraped data into dataframe
results_stradebianchi_2020 <- as.data.frame(t(matrix(results_2020, 8, byrow = F)))

#rename
names(results_stradebianchi_2020) <- c("rank", "#", "name", "age", "team", "UCI point", "PCS points", "time")

#split rider from team

separate(data = results_stradebianchi_2020, col = name, into = c("left", "right"), sep = " ")

我认为最好的选择是获取团队变量名称并使用该名称将其从“名称”列中删除。

欢迎所有建议!

标签: r

解决方案


我认为您的要求表述错误。你想teamname.

在我看来,你应该这样做:

results_stradebianchi_2020 %>% 
    mutate(name = stringr::str_remove(name, team))

用 .写这个而不是你的行separate

在这种情况下separate,对您来说不是最佳解决方案,因为分隔字符没有明确定义。

另外,我建议您从namewith中删除初始空白stringr::str_trim(name)


推荐阅读