[英]Subset in R not removing rows in data frame
总结过程,我从bbref中提取了数据,将其结构化为一个数据框,将3个向量从角色转换为数字,并选择了玩20场以上游戏的玩家子集。 但是,当我对数据进行重新排序并显示前20名时,只有少数不合格的人被删除,并且仍然有很多观察结果,其中有不到20场比赛。
library(XML)
library(RCurl)
library(plyr)
urladv <- "https://www.basketball-reference.com/leagues/NBA_2019_advanced.html"
urladvdata <- getURL(urladv)
dataadv <- readHTMLTable(urladvdata, stringsAsFactors = FALSE, encoding = "UTF-8")
datadv <- structure(dataadv, row.names =c(NA, -734), .Names = seq_along(dataadv), class = "data.frame")
advstats <- ldply(dataadv, data.frame)
advstats[,c('PER', 'BPM')] <- sapply(advstats[,c('PER','BPM', 'G')], as.numeric)
advstats <- subset(advstats, G > 20)
advstats <- advstats[with(advstats,order(-PER)),]
advstats[1:20,]
advstats [1:20,]的输出包括Trevon Duval,Gary Payton和Alan williams等球员,他们各自有5场或以下比赛。 我很困惑这些观测值的特殊情况是什么,因为该子集删除了100多个观测值。
正如Ben在评论中提到的那样,您在执行sapply()
的行中缺少了'G'
。 它看起来应该像这样:
advstats[,c('PER', 'BPM', 'G')] <- sapply(advstats[,c('PER','BPM', 'G')], as.numeric)
因为您缺少<-
左侧的'G'
,所以它没有将'G'
从<chr>
为<dbl>
数据类型。 因此,当您运行subset()
函数时,该函数不起作用,因为您无法对字符数据类型使用数学运算符。
我相信有帮助吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.