2017-03-10 45 views
1

全部中的向量中的值。替换R

我需要用向量平均值来替换R中向量中的特定值(异常值)(在这种情况下,其他建议将会被赞赏)。我想使用R函数“替换”来实现这一点,但我仍然是初学者,而且我收到了一个我自己无法修复的错误。这是我正尝试:

replace(data$students, outlier, mean(data&students)) 

有人告诉我在另一篇文章,我不能老是用&的公式,所以也许that's的问题,但在同一时间,这是错误I' m得到:

invalid subscriptor type 'list' 

这意味着我必须创建一个列表才能输入替换功能?我应该输入什么?

对不起,基本信息,但我刚刚开始与R.非常感谢您的好回应。

+0

您已经使用'data&'而不是'data $'。另外'replace'中的secnd参数应该是逻辑或数字索引。目前还不清楚'outlier'是什么 – akrun

+0

&是一个错字。我在我的代码中正确做到了:-)。问题可能出在异常。我有异常< - dplyr :: filter(data,data $ students> 2000),它返回一个包含数字和字符串的向量....一个列表? – albert

+0

关于'outlier',它应该是一个元素标识符。即作为一个例子来代替NA'i1 < - 哪个(是.na(数据$学生));替换(data $ students,i1,mean(data $ students,na.rm = TRUE))' – akrun

回答

2

如果异常检测是基于值大于2000,那么

data$students <- with(data, replace(students, students > 2000, mean(students))) 

关于mean的一部分,它是不明确的mean是否发生了异常值了。如果不是

i1 <- data$students >2000 
data$students <- with(data, replace(students, i1, mean(students[i1]))) 
+1

谢谢!在第一种方法中,它似乎不是,所以显然第一种方法是有效的:-) – albert