【发布时间】:2021-02-26 04:58:43
【问题描述】:
我有一个包含 96 个不同变量的数据表,包括 17 个不同周的每周参加 NFL 比赛的人数。
df 的 colnames 如下所示:
colnames(df)
[1] "NFL_team_name" "year" "season_performance" "margin_of_victory" "strength_of_schedule"
[6] "simple_rating" "offensive_ranking" "defensive_ranking" "playoffs" "sb_winner"
[11] "price" "weekly_attendance.1" "day.1" "time.1" "home_ind.1"
[16] "winner.1" "weekly_attendance.2" "day.2" "time.2" "home_ind.2"
[21] "winner.2" "weekly_attendance.4" "day.4" "time.4" "home_ind.4"
[26] "winner.4" "weekly_attendance.5" "day.5" "time.5" "home_ind.5"
[31] "winner.5" "weekly_attendance.6" "day.6" "time.6" "home_ind.6"
等等..
一些每周出勤列有 NA,我想根据行号将其余每周出勤列的平均值放入其中。 每周出勤数列是 12,17,22,27...,如下所示。 我已经尝试过类似以下的方法,但我真的不知道如何让它工作:
所有具有每周属性的行:
mean(df[1,c(12,17,22,27,32,37,42,47,52,57,62,67,72,77,82,87,92)])
表示每行(团队和年份)的每周考勤列:
rowmeans <- as.data.table(rowMeans(df[,c(12,17,22,27,32,37,42,47,52,57,62,67,72,77,82,87,92)], na.rm = T))
使用 rowmeans 替换 na's (SOMETHING LIKE THIS):
for (i in 1:nrow(df)) {
if (is.na(df[i,])) {
df[i,] <- rowmeans[i,]
}
else
next
}
所以我想要的是根据每行中每周出勤列的平均值填写每行中的 NA。
希望它是有道理的,并且你们中的一些人可以告诉我缺少什么。
【问题讨论】: