[英]How to use ifelse across multiple columns with alphanumeric range in R to create a new column?
[英]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"))
您的條件有點復雜,因為您需要考慮B
, C
或D
列中是否包含NA
。 因此,您可以嘗試使用dplyr::case_when
作為:
編輯:基於建議@A.Suliman
有沒有必要有檢查is.na
與case_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.