0
많이 확인했는데 비슷한 질문이 있지만 간단한 것을 이해할 수는 없습니다. 다른 야구 직책에 대한 평균 급여를 계산하려고합니다.NaN 결과 tapply를 사용하여 계산할 때
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입니다. – Hugh
덜 관련 :'na.rm'은'merge' 함수의 인자가 아닙니다. – lmo
@Hugh, 귀하의 초고속 답변에 많은 감사드립니다. 따라서이 실수에서 내 실수는 어디에 있습니까? – Oleksiy