r - 在分隔符上拆分字符串
问题描述
我有一个数据框,其中的行如下所示:
Rank..Player Pos Team PosRank
1. Le'Veon Bell RB PIT RB1
2. Todd Gurley II RB LAR RB2
问题是第一列中的数字和名称是一个字符串,有些名称中有句点,这使得将两者分开有点棘手:
18. A.J. Green WR CIN WR7
我见过的所有解决方案都涉及拆分仅包含数字和字母的字符串。我需要一种方法来拆分第一列,而不会像上面那样拆分名称。
这是我用来从 ESPN 抓取数据的代码:
df <- read_html("http://www.espn.com/fantasy/football/story/_/page/
18RanksPreseason300nonPPR/2018-fantasy-football-non-ppr-rankings-top-300")
ranks <- df %>%
html_nodes("table.inline-table") %>%
.[[2]] %>%
html_table()
解决方案
我们可以使用sub
创建一个delimiter
然后将其分成两列read.csv
tmp <- read.csv(text=sub("^(\\d+)\\.\\s+(.*)", "\\1,\\2",
ranks[[1]]), header = FALSE, col.names =c("Rank", "Player"))
ranks1 <- cbind(tmp, ranks[-1])
head(ranks1, 2)
# Rank Player Pos Team PosRank
#1 1 Le'Veon Bell RB PIT RB1
#2 2 Todd Gurley II RB LAR RB2
或与separate
library(tidyr)
separate(ranks, `Rank, Player`, into = c("Rank", "Player"), sep="(?<=[0-9])\\.")
编辑:基于@AndS 评论
推荐阅读
- python - 如何在python中的fpdf中的write方法中给出理由
- javascript - 如何将javascript中的jinja表达式与转义序列字符串进行比较?
- php - 使用行号清除行并将其替换为给定值
- python - Python结构变量
- css - MS Edge 导航栏切换问题
- arrays - 如何将 &mut ndarray::Array 传递给函数并使用它执行元素运算?
- server-side-rendering - Nuxt:如何在服务器端动态地将内容/脚本添加到头部
- javascript - 根据 onChange 事件值改变 redux 状态
- linux - 具有多种模式的 Grep 命令
- c# - 字典按值分组