gpt4 book ai didi

R-将文本中的分数转换为数值

转载 作者:行者123 更新时间:2023-12-04 10:28:47 26 4
gpt4 key购买 nike

我正在尝试将“9¼”转换为“9.25”,但似乎无法正确读取该分数。

这是我正在使用的数据:

library(XML)

url <- paste("http://mockdraftable.com/players/2014/", sep = "")
combine <- readHTMLTable(url,which=1, header=FALSE, stringsAsFactors=F)

names(combine) <- c("Name", "Pos", "Hght", "Wght", "Arms", "Hands",
"Dash40yd", "Dash20yd", "Dash10yd", "Bench", "Vert", "Broad",
"Cone3", "ShortShuttle20")

例如,第一行的“手”列为“9¼”,我如何使combined $ Hands变为9.25?所有其他分数1/8-7/8相同。

任何帮助,将不胜感激。

最佳答案

您可以使用特殊的返回函数尝试在读取XML时直接将unicode编码转换为ASCII:

library(stringi)
readHTMLTable(url,which=1, header=FALSE, stringsAsFactors=F,elFun=function(node) {
val = xmlValue(node); stri_trans_general(val,"latin-ascii")})

然后,您可以使用@Metrics的建议将其转换为数字。

例如,您可以使用@G。 this post的Grothendieck函数清除了 Arms数据:
library(XML)
library(stringi)
library(gsubfn)
#the calc function is by @G. Grothendieck
calc <- function(s) {
x <- c(if (length(s) == 2) 0, as.numeric(s), 0:1)
x[1] + x[2] / x[3]
}

url <- paste("http://mockdraftable.com/players/2014/", sep = "")

combine<-readHTMLTable(url,which=1, header=FALSE, stringsAsFactors=F,elFun=function(node) {
val = xmlValue(node); stri_trans_general(val,"latin-ascii")})

names(combine) <- c("Name", "Pos", "Hght", "Wght", "Arms", "Hands",
"Dash40yd", "Dash20yd", "Dash10yd", "Bench", "Vert", "Broad",
"Cone3", "ShortShuttle20")

sapply(strapplyc(gsub('\"',"",combine$Arms), "\\d+"), calc)

#[1] 30.000 31.500 30.000 31.750 31.875 29.875 31.000 31.000 30.250 33.000 32.500 31.625 32.875

根据您的机器,可能存在一些编码问题(请参阅注释)

关于R-将文本中的分数转换为数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28663319/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com