繁体   English   中英

R中的子集不会删除数据框中的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM