【发布时间】:2017-11-28 05:31:28
【问题描述】:
我有收入、支出、人口和状态的数据。收入、支出和人口存在缺失值。
我创建了一个 for 循环,用按状态计算的中值替换缺失值。但是,我必须为收入、支出和人口分别运行 for 循环。我试图创建一个函数来仅传递列名,但它给我一个 is.na() 错误。这是for循环
for (i in (unique(data$State))) {
data$Income[is.na(data$Income) & data$State==i] <-
median(data$Income[data$State==i], na.rm = TRUE)
}
代替收入,我尝试创建一个函数并传递 x.. 但它不起作用。有人可以帮我实现这个功能。我尝试了一些东西,但它给了我一个 is.na 错误
Med_sub <- function(x){
for (i in (unique(data$State))) {
data$x[is.na(data$x)&data$State==i] <- median(data$x[data$State==i], na.rm = TRUE)
}
}
Med_sub(Income)
Med_sub(Population)
我是 R 新手。任何帮助将不胜感激。
【问题讨论】:
-
能否提供一个工作数据集?
-
它给你什么错误信息?您的数据是真的
NA还是有空格/字符? -
你可以举个例子: data
标签: r