R函数将平均值的3个标准差内的值转换为二进制

时间:2015-01-16 02:53:42

标签: r standard-deviation

我是R的新手,我的任务是创建一个功能来比较和翻译从模拟网络挖掘的数据,以分析用户模式。

R app应该计算所使用的每个协议的总和,总和的平均值和总和的标准偏差。该功能目前是:

> total[total == 0] <- NA
res2 <- do.call(`data.frame`,
                aggregate(values~ind, stack(total), 
                          FUN=function(x) c(Total=sum(x, na.rm=FALSE), Mean=mean(x) SD=sd(x)))  

如果用户的协议计数在&#34之内,则使用另一个函数将值转换为1; Mean - 3sd&lt;计数&lt;平均值+ 3sd&#34;

> nm1 <- setdiff(colnames(total), "row.names")
output[,nm1] <-(res2$Mean-3SD[col(total[,nm1])] >total[,nm1] >res2$Mean-3SD[col(total[,nm1])])+0 

这是比较正确的方法吗?

由于

修改:

在运行代码时,它会显示:

Error: unexpected symbol in "output[,nm1] <-(res2$Mean-3SD"

1 个答案:

答案 0 :(得分:1)

R不理解A < B < C之类的双重不等式为<,其族是二元运算符。因此,上述内容应转换为A < B & B < C以在语法上有效。

现在,您没有提供可重现的示例,但在您的情况下,行

output[,nm1] <- (res2$Mean-3SD[col(total[,nm1])] > total[,nm1] > res2$Mean-3SD[col(total[,nm1])])+0 

应该是

output[,nm1] <- 
 (res2$Mean - 3*SD[col(total[,nm1])] > total[,nm1] & 
    total[,nm1] > res2$Mean - 3*SD[col(total[,nm1])]) + 0 

据我所知。这有帮助吗?

编辑:另外,正如RomanLuštrik的评论中所述,您还应该记住显式乘法*