【发布时间】:2021-01-29 07:07:34
【问题描述】:
所以我在下面使用此代码。 maindata 是玩家、他们的家乡和每场比赛得分的表格。我正在尝试制作一个新表格,其中一列中包含城市,第二列中包含每场比赛的平均分(如表 A 所示)。我不断得到一张表格,其中列出了城市,AvgPoints 的行都显示了 NA。我收到此错误“参数不是数字或逻辑:返回 NAargument 不是数字或逻辑”,并且它会重复数百次。主要数据有 3561 个观测值。
point <- maindata%>%
group_by(City, State) %>%
summarise(AvgPoints = mean(PTS.1, na.rm = TRUE))
表 A
City AvgPoints
----------------------------
New York City 19.9
Los Angeles 22.1
Boston 13.3
【问题讨论】:
-
请查看
str(maindata)了解列的类型。或者特别是class(maindata$PTS.1)可能是“PTS.1”不是数字 -
@akrun 它说它们是因素。我不确定为什么。
-
如果有一些元素是非数字的,即它将读取为
character。在新版本的 R 中,它应该是character类而不是factor,因为默认情况下是stringsAsFactors = FALSE。我的观点是,如果您的列有c(1.5, 1.2, 'a1'),它不是数字列,因为其中一个元素不是数字。您可以使用maindata %>% mutate(PTS.1 = as.numeric(as.character(PTS.1)))将因子转换为数字,然后进行分组。将非数字转换为 NA 时会有一些友好的警告 -
@akrun 太好了,我明白你的意思,我已经应用了这个功能并让它工作了。谢谢!