【发布时间】:2017-01-21 00:42:22
【问题描述】:
如何使用 colMedian 函数计算 colMedian。我收到一个错误:参数“x”必须是矩阵或向量。
col_medians <- round(colMedians(impute_marks[,-1], na.rm=TRUE),0)
k <- which(is.na(impute_marks), arr.ind=TRUE)
impute_marks[k] <- col_medians[k[,-1]]
我需要对数据框中除第一列以外的所有列执行以下操作。 下面的代码工作正常。但是我在for循环中循环时会报错unknown courses。
impute_marks$c1[is.na(impute_marks$c1)] <- round(mean(impute_marks$c1[!is.na(impute_marks$c1)]),0)
这里,impute_marks 是数据集的名称,c1 是列名。
使用上述操作,我能够找到平均值并替换 c1(列)中的所有 NA 值。但我有 30 多列。如何在 for 循环中编写上述操作以循环遍历每门课程并将 NA 值替换为平均值?
我的操作功能:
impute_marks$F27SA[is.na(impute_marks$F27SA)] <- round(mean(impute_marks$F27SA[!is.na(impute_marks$F27SA)]),0)
imputing_using_mean <- function()
{
courses <- names(impute_marks)[2:26]
for(i in seq_along(courses))
{
impute_marks$courses[[i]][is.na(impute_marks$courses[[i]])] <- round(mean(impute_marks$courses[[i]][!is.na(impute_marks$courses[[i]])]),0)
}
}
imputing_using_mean()
【问题讨论】: