簡體   English   中英

使用ifelse在r中創建新列

[英]use ifelse to create new column in r

我的代碼是:

data$E<-ifelse(data$D==data$B, "b", ifelse(data$D==data$C, "c", "unknowwn"))

結果:

  A   B   C   D   E
1 16  16  NA  16  b
2 20  NA  20  20  NA
3 24  NA  NA  24  NA

但是我想要的是:

  A   B   C   D   E
1 16  16  NA  16  b
2 20  NA  20  20  c
3 24  NA  NA  24  unknowwn

劑量有人知道如何解決這個問題嗎? 謝謝!

data$E <- ifelse(!is.na(data$B) & data$D == data$B, "b", 
            ifelse(!is.na(data$C) & data$D == data$C, "c", "unknowwn"))

您的條件有點復雜,因為您需要考慮BCD列中是否包含NA 因此,您可以嘗試使用dplyr::case_when作為:

編輯:基於建議@A.Suliman有沒有必要有檢查is.nacase_when

library(dplyr)

data %>% mutate( E = case_when(
  D==B ~ "b",
  D==C ~ "c",
  TRUE ~ "Unknown"
))

#    A  B  C  D       E
# 1 16 16 NA 16       b
# 2 20 NA 20 20       c
# 3 24 NA NA 24 Unknown

數據:

data <- read.table(text= 
"A   B   C   D   
1 16  16  NA  16  
2 20  NA  20  20
3 24  NA  NA  24",
header = TRUE)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM