私はデータフレームを持っています:
id <- c(rep(1, 4), rep(2, 3), rep(3, 2), 4)
rate <- c(rep(1, 3), NA, 0.5, 0.6, NA, 0.7, NA, NA)
df <- data.frame(id, rate)
NA
次の条件に基づいてを置き換える必要があります。
for (i in 1:dim(df)[1]) {
if (is.na(df$rate[i])) {
mrate <- round(mean(df$rate[df$id == df$id[i]], na.rm = T), 1)
if (is.nan(mrate)) {
df$rate[i] <- 1
} else {
df$rate[i] <- mrate
}
}
}
どうやら、for
200K 行を超える大きなデータ フレームではループが遅すぎるようです。for
ループを使用せずに、より高速な方法を使用するにはどうすればよいですか?
ありがとう!