【发布时间】:2017-11-13 01:27:01
【问题描述】:
查了很多,有类似的问题,但是一件简单的事情都看不懂。我正在尝试计算不同棒球位置的平均工资。
library(Lahman)
library(tidyverse)
data("Fielding")
data(Salaries)
# First, I need to merge two datasets
merged.df <- merge(Fielding, Salaries, by = "playerID", na.rm = TRUE)
merged.df.2002 <- merged.df[merged.df$yearID.x == "2002",]
# Let's try tapply
mean.salary <- tapply(merged.df.2002$POS, merged.df.2002$salary, mean, na.rm = TRUE)
# So it gives me an error
# In mean.default(X[[i]], ...) :
# argument is not numeric or logical: returning NA
class(merged.df.2002$POS)
class(merged.df.2002$salary)
# Very likely POS column is factor for some reason.
# Coerce them through
merged.df.2002$POS <- as.numeric(as.character(merged.df.2002$POS))
# Warning message:
# NAs introduced by coercion
merged.df.2002$salary <- as.numeric(as.character(merged.df.2002$salary))
#as.numeric(merged.df.2002$salary)
class(merged.df.2002$salary)
# Let's try tapply again
mean.salary <- tapply(merged.df.2002$POS, merged.df.2002$salary, mean, na.rm
= TRUE)
mean.salary
60000 62500 63500 65000 67000 67500 68000 68750 70000
71000 72500 77500 78000 80000 82000 82500
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN
有什么想法吗?非常感谢!
【问题讨论】:
-
空集的均值是 NaN。特别是 mean(NA, na.rm=TRUE) 是 NaN。
-
不太相关:
na.rm不是merge函数的参数。 -
@Hugh,非常感谢您的超快速回答,那么我在这个流程中的错误在哪里?
-
在我的手机上,但我的方法是:na.rm 在哪里使用 mean?在这些情况下,特定组中的所有值都是 NA 吗?我是否尝试在丢弃所有元素后取集合的平均值?
-
你不想在你的合并中
na.rm;请参阅all.x和all.y参数,您可能正在使用这些参数