如果R資料框的一列中存在NA值,如何計算標準差?


如果R資料框的向量或列中存在NA值,則計算標準差的sd命令的結果將為NA。為了解決這個問題,我們需要像處理不包含缺失值的向量一樣,使用na.rm=TRUE。例如,如果我們有一個定義為x的資料框df的列包含缺失值,則x的標準差可以計算為sd(df$x)。

示例

考慮下面的資料框

線上演示

> set.seed(3521)
> x<-c(NA,rnorm(19,5,0.34))
> df1<-data.frame(x)
> df1

輸出

x
1 NA
2 5.107864
3 4.797851
4 5.184345
5 4.680958
6 5.245151
7 5.760667
8 4.924365
9 5.770071
10 5.313064
11 4.564939
12 4.139275
13 4.997252
14 4.991125
15 5.402940
16 5.020513
17 4.644727
18 4.766003
19 5.658426
20 4.939198

示例

> sd(df1$x)

輸出

[1] NA

忽略NA值計算x的標準差

示例

> sd(df1$x,na.rm=TRUE)

輸出

[1] 0.4210732

讓我們來看另一個例子

示例

線上演示

> z<-sample(c(NA,5,8,7,4,1),20,replace=TRUE)
> df2<-data.frame(z)
> df2

輸出

z
1 NA
2 8
3 4
4 4
5 NA
6 8
7 NA
8 1
9 8
10 8
11 1
12 NA
13 7
14 4
15 1
16 5
17 4
18 5
19 NA
20 7

示例

> sd(df2$z,na.rm=TRUE)

輸出

[1] 2.618615

更新於:2020年11月7日

4K+瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.