如何子集R資料框行並在輸出中保留包含NA的行?
為了子集R資料框行並在輸出中保留包含NA的行,我們可以使用subset函式以及帶有|符號的OR條件來處理na值。
例如,如果我們有一個名為df的資料框,其中包含一個名為C的列,該列包含一些NA值,那麼我們可以使用以下命令子集df中大於5的值並將NA包含在輸出中:
subset(df,C>5|is.na(C))
示例1
以下程式碼片段建立了一個樣本資料框:
x1<-sample(c(NA,1,2,3),20,replace=TRUE) y1<-sample(c(NA,1,2,3),20,replace=TRUE) df1<-data.frame(x1,y1) df1
建立了以下資料框:
x1 y1 1 3 3 2 2 2 3 1 1 4 2 2 5 1 NA 6 2 NA 7 1 3 8 2 3 9 2 2 10 1 3 11 NA 2 12 3 1 13 3 3 14 3 1 15 1 2 16 1 1 17 2 2 18 2 1 19 1 3 20 1 2
為了在不包含NA的情況下子集df1中x1值小於2的行,請將以下程式碼新增到上述程式碼片段中:
x1<-sample(c(NA,1,2,3),20,replace=TRUE) y1<-sample(c(NA,1,2,3),20,replace=TRUE) df1<-data.frame(x1,y1) subset(df1,x1<2)
輸出
如果您將以上所有程式碼片段作為一個程式執行,它將生成以下輸出:
x1 y1 3 1 1 5 1 NA 7 1 3 10 1 3 15 1 2 16 1 1 19 1 3 20 1 2
此外,為了在包含NA的情況下子集df1中x1值小於2的行,請將以下程式碼新增到上述程式碼片段中:
x1<-sample(c(NA,1,2,3),20,replace=TRUE) y1<-sample(c(NA,1,2,3),20,replace=TRUE) df1<-data.frame(x1,y1) subset(df1,x1<2|is.na(x1))
輸出
如果您將以上所有程式碼片段作為一個程式執行,它將生成以下輸出:
x1 y1 3 1 1 5 1 NA 7 1 3 10 1 3 11 NA 2 15 1 2 16 1 1 19 1 3 20 1 2
示例2
以下程式碼片段建立了一個樣本資料框:
x2<-sample(c(NA,rpois(2,3)),20,replace=TRUE) y2<-sample(c(NA,rpois(2,5)),20,replace=TRUE) df2<-data.frame(x2,y2) df2
建立了以下資料框:
x2 y2 1 5 NA 2 1 3 3 1 6 4 5 3 5 1 6 6 5 3 7 1 6 8 5 6 9 5 6 10 5 NA 11 NA 6 12 1 3 13 5 NA 14 1 3 15 NA 6 16 1 6 17 5 3 18 NA NA 19 NA 3 20 5 6
為了在不包含NA的情況下子集df2中y2值小於6的行,請將以下程式碼新增到上述程式碼片段中:
x2<-sample(c(NA,rpois(2,3)),20,replace=TRUE) y2<-sample(c(NA,rpois(2,5)),20,replace=TRUE) df2<-data.frame(x2,y2) subset(df2,y2<6)
輸出
如果您將以上所有程式碼片段作為一個程式執行,它將生成以下輸出:
x2 y2 2 1 3 4 5 3 6 5 3 12 1 3 14 1 3 17 5 3 19 NA 3
此外,為了在包含NA的情況下子集df2中y2值小於6的行,請將以下程式碼新增到上述程式碼片段中:
x2<-sample(c(NA,rpois(2,3)),20,replace=TRUE) y2<-sample(c(NA,rpois(2,5)),20,replace=TRUE) df2<-data.frame(x2,y2) subset(df2,y2<6|is.na(y2))
輸出
如果您將以上所有程式碼片段作為一個程式執行,它將生成以下輸出:
x2 y2 1 5 NA 2 1 3 4 5 3 6 5 3 10 5 NA 12 1 3 13 5 NA 14 1 3 17 5 3 18 NA NA 19 NA 3
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP