【发布时间】:2017-05-02 11:17:56
【问题描述】:
我是 r 的新手。我有一个数据框,每 4 个不同的任务/措施(列)显示每个参与者(行)8 trials。我想remove outliers*(每个参与者每个任务)并将它们转换为 NA,同时保留预先存在的 NA。
我使用的代码如下;它丢弃了预先存在的 NA(即存在于原始数据帧中的 NA),而额外的结果是我无法取回数据帧(它不会接受 as.data.frame)我认为是因为大小不等.我认为问题是删除异常值功能,但是
我认为当 NA 上的操作在函数内时,它只是说明如何仅在函数应用期间处理 NA,并且
我试图通过 na.rm = FALSE 的变化来更改函数,但它不会运行。非常感谢任何帮助。
fname = "VSA 感知控件_right.csv" ctrl_vsa_trials = read.csv(fname, header = TRUE, stringsAsFactors = FALSE, na.strings = c(""))
remove_outliers = function(x, na.rm = TRUE, ...){
qnt = quantile(x, probs = c(.25, .75), na.rm = na.rm, ...)
H = 1.5 * IQR(x, na.rm = na.rm)
y = x
y[x < (qnt[1] - H)] = NA
y[x > (qnt[2] + H)] = NA
y
}
ctrl_vsa_trials_clean = aggregate(cbind(Pre_first,Post_first,Pre_adj,Post_adj) ~ Ppt, ctrl_vsa_trials, remove_outliers, na.action = NULL)
- 这是由于我的测量设备出现问题,我觉得这是合理的!
【问题讨论】:
-
“抛弃现有的 NA”是什么意思?
标签: r