在 R 中建立資料框列的樣本,排除 NA 值
要建立一個隨機樣本,排除資料框列的缺失值,我們可以使用 sample 函式和資料框列的 is.na 的否定。
例如,如果我們有一個名為 df 的資料框,其中包含一列 X,其中有一些 NA,那麼我們可以使用以下命令建立大小為 100 的 X 值的隨機樣本:
sample(df$X[!is.na(df$X)],100,replace=TRUE).
示例 1
以下是建立資料框的程式碼片段:
x<-rep(c(NA,2,5,10,15),times=4) df1<-data.frame(x) df1
建立了以下資料框:
By the x 1 NA 2 2 3 5 4 10 5 15 6 NA 7 2 8 5 9 10 10 15 11 NA 12 2 13 5 14 10 15 15 16 NA 17 2 18 5 19 10 20 15
要建立大小為 100 的 x 的隨機樣本,排除上面建立的資料框上的 NA,請將以上程式碼新增到以下程式碼段中:
x<-rep(c(NA,2,5,10,15),times=4) df1<-data.frame(x) sample(df1$x[!is.na(df1$x)],100,replace=TRUE)
輸出
如果將以上所有給定的程式碼段作為一個程式執行,則會生成以下輸出:
[1] 10 10 5 10 5 2 2 2 15 2 2 5 10 10 2 15 10 10 2 5 2 2 10 2 10 [26] 15 2 10 10 2 10 5 2 15 15 10 5 2 5 2 15 5 10 10 10 10 5 15 2 10 [51] 10 15 5 10 15 10 2 10 15 15 15 10 15 15 2 5 5 15 2 15 15 5 2 2 5 [76] 5 2 10 2 10 2 15 10 5 15 2 10 5 15 15 15 10 2 10 5 15 5 5 15 2
示例 2
以下程式碼片段建立了一個樣本資料框:
y<-rep(c(NA,rnorm(1),rnorm(1),rnorm(1)),times=5) df2<-data.frame(y) df2
建立了以下資料框:
y 1 NA 2 -1.2548971 3 1.1956757 4 0.6556753 5 NA 6 -1.2548971 7 1.1956757 8 0.6556753 9 NA 10 -1.2548971 11 1.1956757 12 0.6556753 13 NA 14 -1.2548971 15 1.1956757 16 0.6556753 17 NA 18 -1.2548971 19 1.1956757 20 0.6556753
要建立大小為 100 的 y 的隨機樣本,排除上面建立的資料框上的 NA,請將以下程式碼新增到以上程式碼段中:
y<-rep(c(NA,rnorm(1),rnorm(1),rnorm(1)),times=5) df2<-data.frame(y) sample(df2$y[!is.na(df2$y)],50,replace=TRUE)
輸出
如果將以上所有給定的程式碼段作為一個程式執行,則會生成以下輸出:
[1] 0.6556753 -1.2548971 0.6556753 1.1956757 0.6556753 0.6556753 [7] -1.2548971 0.6556753 0.6556753 0.6556753 -1.2548971 1.1956757 [13] 0.6556753 -1.2548971 -1.2548971 -1.2548971 0.6556753 1.1956757 [19] -1.2548971 -1.2548971 0.6556753 -1.2548971 1.1956757 1.1956757 [25] 0.6556753 0.6556753 1.1956757 1.1956757 -1.2548971 0.6556753 [31] 0.6556753 1.1956757 0.6556753 1.1956757 0.6556753 0.6556753 [37] 0.6556753 -1.2548971 1.1956757 0.6556753 0.6556753 -1.2548971 [43] -1.2548971 0.6556753 1.1956757 0.6556753 -1.2548971 1.1956757 [49] -1.2548971 -1.2548971
示例 3
以下程式碼片段建立了一個樣本資料框:
z<-rep(c(NA,rpois(1,5),rpois(1,2),rpois(1,10),rpois(1,3)),times=4) df3<-data.frame(z) df3
建立了以下資料框:
z 1 NA 2 7 3 2 4 10 5 1 6 NA 7 7 8 2 9 10 10 1 11 NA 12 7 13 2 14 10 15 1 16 NA 17 7 18 2 19 10 20 1
要建立大小為 100 的 z 的隨機樣本,排除上面建立的資料框上的 NA,請將以下程式碼新增到以上程式碼段中:
z<-rep(c(NA,rpois(1,5),rpois(1,2),rpois(1,10),rpois(1,3)),times=4) df3<-data.frame(z) sample(df3$z[!is.na(df3$z)],200,replace=TRUE)
輸出
如果將以上所有給定的程式碼段作為一個程式執行,則會生成以下輸出:
[1] 10 2 2 2 7 2 1 2 10 2 10 2 1 1 7 1 10 2 10 1 2 10 7 1 7 [26] 1 2 10 2 2 10 10 2 7 10 7 7 7 10 2 1 2 2 10 2 2 10 10 7 7 [51] 1 7 1 10 2 10 7 2 7 2 10 2 1 7 7 7 2 2 10 10 10 10 7 7 2 [76] 2 2 1 1 7 7 7 2 1 7 1 2 10 10 2 10 10 10 7 2 10 10 2 10 7 [101] 7 10 7 2 10 2 10 10 7 10 2 2 2 1 1 1 7 10 7 10 7 7 2 2 7 [126] 10 2 2 2 2 1 10 1 2 7 10 10 1 10 10 7 7 2 2 7 2 2 1 2 10 [151] 7 2 7 10 10 1 10 7 2 7 2 7 1 10 7 2 2 2 1 10 10 2 10 1 1 [176] 7 10 1 10 1 1 2 2 1 2 10 1 10 7 7 2 7 10 10 1 10 1 1 1 7
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP