[英]Choose a value from 4 columns in R
我想檢查數據框中的 4 列,並從 col1、col2、col3 或 col4 中獲取值。 下面的 for 循環和 if/else 有效。 但是,我想問一下如何以更有效的方式在 R 中做到這一點?
for (j in 1:nrow(df)){
if(is.na(df[j,"Name.A"])){
if(is.na(df[j,"Name.B"])){
if(is.na(df[j,"Name.C"])){
df[j,"Name"] = df[j,"Name.D"]
} else{
df[j,"Name"] = df[j,"Name.C"]
}
}else{
df[j,"Name"] = df[j,"Name.B"]
}
}else {
df[j,"Name"] = df[j,"Name.A"]
}
}
使用coalesc
通過dplyr
獲取第一個非 NA 值。
library(dplyr)
df <- data.frame(
Name.A = c(NA, NA, NA, 1),
Name.B = c(NA, NA, 2, 2),
Name.C = c(NA, 3, 3, 3),
Name.D = c(4, 4, 4, 4))
df %>% mutate(name = coalesce(Name.A, Name.B, Name.C, Name.D))
Name.A Name.B Name.C Name.D name
1 NA NA NA 4 4
2 NA NA 3 4 3
3 NA 2 3 4 2
4 1 2 3 4 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.