如何在 R 中新增兩列,如果這兩列都包含缺失值?
如果我們想新增 R 資料框的兩列,並且每一列都包含缺失值,那麼可以透過以下幾種方式之一來新增列:
如果兩列都是數值型,則新增兩列的值。
如果其中一列包含缺失值,則返回數值型。
如果兩列都包含缺失值,則返回 NA。
為此,我們可以藉助 apply 函式和 ifelse 函式,如下例所示。
示例 1
以下程式碼片段建立了一個示例資料框:
x1<-sample(c(NA,1,2),20,replace=TRUE) x2<-sample(c(NA,5),20,replace=TRUE) df1<-data.frame(x1,x2) df1
建立以下資料框:
x1 x2 1 1 NA 2 1 5 3 2 5 4 1 5 5 2 5 6 NA NA 7 2 NA 8 1 NA 9 1 5 10 NA NA 11 1 NA 12 2 NA 13 NA NA 14 NA NA 15 1 NA 16 1 5 17 NA NA 18 1 NA 19 2 NA 20 NA 5
要新增 df1 的列,請將以下程式碼新增到上述程式碼片段中:
x1<-sample(c(NA,1,2),20,replace=TRUE) x2<-sample(c(NA,5),20,replace=TRUE) df1<-data.frame(x1,x2) df1$Sum<-apply(cbind(df1$x1,df1$x2),1,function(x) ifelse(all(is.na(x)),NA,sum(x,na.rm=T))) df1
輸出
如果您將以上所有程式碼片段作為一個程式執行,則會生成以下輸出:
x1 x2 Sum 1 1 NA 1 2 1 5 6 3 2 5 7 4 1 5 6 5 2 5 7 6 NA NA NA 7 2 NA 2 8 1 NA 1 9 1 5 6 10 NA NA NA 11 1 NA 1 12 2 NA 2 13 NA NA NA 14 NA NA NA 15 1 NA 1 16 1 5 6 17 NA NA NA 18 1 NA 1 19 2 NA 2 20 NA 5 5
示例 2
以下程式碼片段建立了一個示例資料框:
y1<-sample(c(NA,rnorm(2)),20,replace=TRUE) y2<-sample(c(NA,rnorm(2)),20,replace=TRUE) df2<-data.frame(y1,y2) df2
建立以下資料框:
y1 y2 1 0.5109281 -0.6697566 2 NA -0.1898259 3 NA -0.1898259 4 -0.9540862 -0.6697566 5 NA -0.1898259 6 NA -0.1898259 7 NA NA 8 0.5109281 -0.6697566 9 NA NA 10 0.5109281 NA 11 0.5109281 -0.6697566 12 -0.9540862 NA 13 -0.9540862 -0.6697566 14 NA -0.1898259 15 0.5109281 -0.1898259 16 NA -0.1898259 17 0.5109281 NA 18 NA -0.6697566 19 NA -0.1898259 20 NA NA
要新增 df2 的列,請將以下程式碼新增到上述程式碼片段中:
y1<-sample(c(NA,rnorm(2)),20,replace=TRUE) y2<-sample(c(NA,rnorm(2)),20,replace=TRUE) df2<-data.frame(y1,y2) df2$Sum<-apply(cbind(df2$y1,df2$y2),1,function(x) ifelse(all(is.na(x)),NA,sum(x,na.rm=T))) df2
輸出
如果您將以上所有程式碼片段作為一個程式執行,則會生成以下輸出:
y1 y2 Sum 1 0.5109281 -0.6697566 -0.1588286 2 NA -0.1898259 -0.1898259 3 NA -0.1898259 -0.1898259 4 -0.9540862 -0.6697566 -1.6238429 5 NA -0.1898259 -0.1898259 6 NA -0.1898259 -0.1898259 7 NA NA NA 8 0.5109281 -0.6697566 -0.1588286 9 NA NA NA 10 0.5109281 NA 0.5109281 11 0.5109281 -0.6697566 -0.1588286 12 -0.9540862 NA -0.9540862 13 -0.9540862 -0.6697566 -1.6238429 14 NA -0.1898259 -0.1898259 15 0.5109281 -0.1898259 0.3211022 16 NA -0.1898259 -0.1898259 17 0.5109281 NA 0.5109281 18 NA -0.6697566 -0.6697566 19 NA -0.1898259 -0.1898259 20 NA NA NA
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP