使用R / awk打印文件中列的标准偏差

时间:2014-10-23 12:48:58

标签: linux r awk

我有一个包含数字列的文件

4.685
5.440
5.751
4.685
3.979

在我的shell脚本中,我想查询其中的许多文件,并获得标准差和平均值

我可以轻松地使用awk awk '{sum+=$1} END { print sum/NR}' file

使用awk进行标准偏差时 awk '{x[NR]=$0; s+=$0} END{a=s/NR; for (i in x){ss += (x[i]-a)^2} sd = sqrt(ss/NR); print sd}' file

我得到0.625。这个数字与excel不同,后者给我0.699。我发现我可以从命令行执行R来打印出sd: R -q -e "x <- read.csv('file', header = F); sd(x[ , 1])"

但是,这会产生稍微混乱的输出

[1] 4.908
\> 
\>

我可以调整R命令只打印出数字而不需要使用head和cut / awk吗?

我的awk代码提取标准偏差有什么问题?

1 个答案:

答案 0 :(得分:0)

我不能完全说出您的awk有什么问题,但对于R命令,您可能会发现write有帮助:

R -q -e "x<- read.csv('file.csv',header=FALSE)[,1] ; write(sd(x),file='result.txt')"