我有一个很大的数据集(1121行x 532列)。
每一栏代表自我报告问卷的一个项目。
我有几个NAs (n= 3015)。
我想用每一列的中位数替换每一个NAs。
我该怎么做呢?
我尝试使用na.omit函数清除数据集中的缺失值,但R忽略了找到NAs的整行。
这对我来说是一个问题,因为在此操作之后,我得到了一个只有641行的数据集。每一列表示刻度的名称和条目编号(即IUI23 ...IUI是刻度的名称,23是项目的编号)。
我需要找到每一列的中位数,而不是以某种方式选择该列的标题,然后用每列的中位数替换每一个NAs。
发布于 2015-09-23 22:32:35
我解决了我的问题,我想和大家分享我的答案。我使用的是"randomForest“包。我在包中使用了名为na.roughfix (object,... )的函数这是通过中间值/模式来推算所有缺失值。它返回一个完整的数据矩阵或数据帧。对于数值变量,NAs将替换为列中位数。对于因子变量,NAs被替换为最频繁的级别(随机打破平局).If对象不包含NAs,它原封不动地返回。我的数据名是IUI_data。我只需输入: IUI_data.roughfix<- na.roughfix(IUI_data)。它完美地工作了!有关"randomForest“包的更多信息,请查看此处: cran.r-project.org/web/packages/randomForest/randomForest.pdf.
https://stackoverflow.com/questions/32723004
复制相似问题