我正试图从这个网址中抓取信息:http://www.sports-reference.com/cbb/boxscores/index.cgi?month=2&day=3&year=2017
并且已经远远达到了每个游戏都有字符串的程度:
str <-"Yale\n\t\t\t87\n\t\t\t\n\t\t\t\tFinal\n\t\t\t\t\n\t\t\t\n\t\tColumbia\n\t\t\t78\n\t\t\t \n\t\t\t\n\t\t"
理想情况下,我想要使用类似于:
的矢量或数据框str_vec <- c('Yale',87,'Columbia',78)
我尝试了一些不起作用的东西:
without_n <- gsub(x = str, pattern = '\n')
without_Final <- gsub(x = without_n, pattern = 'Final')
str_vec <- strslpit(x = without_Final, split = '\t')
提前感谢任何有用的提示/答案!
答案 0 :(得分:2)
您可以使用gsub
首先用空字符串替换字符串中的所有非字母数字字符。然后在名称和分数之间插入space
。此后,您可以将space
上的字符串拆分为所需的数据结构。
require(stringr)
step_1 <- gsub('([^[:alnum:]]|(Final))', "", str)
#"Yale87Columbia78"
step_2 <- gsub("([[:alpha:]]+)([[:digit:]]+)", "\\1 \\2 ", step_1)
strsplit(str_trim(step_2)," ")
#"Yale" "87" "Columbia" "78"
我认为字符串模式是一致的,这样才能可靠地工作。