我想迭代一个数据帧 - 用中位数替换NA - 但只迭代一个变量向量
这段代码有效,但我想让它更具功能性(同时也将它整合到其他'Tidy'代码中)。如何将第2部分转换为功能样式并将其与第1部分中的表达式链接起来?
ColsMed <- c("V7", "V9", "V10")
for(i in ColsMed){
wvsFSU[is.na(wvsFSU[,i]), i] <- median(wvsFSU[,i], na.rm = TRUE)
}
我正在尝试以下和许多变种。
library(Purrr)
wvsFSU <- map(is.na(wvsFSU), ColsMed, median)
它是循环通过一部分变量而不是整个数据帧,这让我很沮丧
您的数据很广泛。使用聚集的长格式使代码更具动态性。这是一个解决方案:
wvsFSU %>%
rownames_to_column() %>%
gather(k, v, V7, V9, V10) %>% # Enter columns here
group_by(k) %>%
mutate(v = if_else(is.na(v), median(v, na.rm = T), v)) %>%
ungroup() %>%
spread(k,v) %>%
select(-rowname)