【发布时间】:2019-09-17 11:14:00
【问题描述】:
我有一个名为 final_project_data 的数据框,其结构如下。它包括 17 列,其中包含对应于县/州和年份的数据。例如,2006 年阿拉巴马州鲍德温县的人口为 69162 人,失业率为 4.2% 等。
ID County State Population Year Ump.Rate Fertility
<dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
1003 Baldwin County Alabama 69162 2006 4.2 88
1015 Calhoun County Alabama 112903 2006 2.4 na
1043 Baldwin County Alabama na 2007 1.9 71
1049 Calhoun County Alabama 68014 2007 na 90
1050 CountyY Alaska 2757 2006 3.9 na
1070 CountyZ Alaska 11000 2006 7.8 95
1081 CountyY Alaska na 2007 6.5 70
1082 CountyZ Alaska 67514 2007 4.5 60
其中有许多列缺少值,我试图用给定州和年份的平均值替换它们。我遇到了问题,试图循环遍历具有缺失值的每一列,然后遍历年份和行的每个子集以用平均值填充缺失值。我到目前为止的代码如下:
#get list of unique states
states <- unique(final_project_data$State)
#get list of columns with na in them - we will use this to impute missing
values
list_na <- colnames(final_project_data)[ apply(final_project_data, 2, anyNA) ]
list_na
#create a place to hold the missing values
average_missing <- c()
#Loop through each state to impute the missing values with the mean
for(i in 1:length(states)){
average_missing <- apply(final_project_data[which(final_project_data$State == states[i]),colnames(final_project_data) %in% list_na], 2, mean, na.rm = TRUE)
}
average_missing
但是,当我运行上述代码时,我只为每个缺少值的列获取一组值,而不是为每个状态获取不同的值。我也不确定如何将其扩展到包括年份。任何帮助或建议将不胜感激!
【问题讨论】:
-
您是说您需要将 NA 替换为年份和州的平均值。我不明白。我们甚至如何计算年份和州的平均值。这些不是数字。
-
你说得对,对不起,我的问题不清楚。 ump.Rate、生育率等列中包含 na 值。我想用县所属的州和年份的平均值替换那些 na。例如,阿拉巴马州的卡尔霍恩县缺少 2007 年的 ump.rate。我想用平均 ump 替换 na。 2007 年在阿拉巴马州的评分。我已经编辑了我的问题,并为错误的措辞道歉。
标签: r