如何为R中的新列选择三个值之一?
我想在数据框中创建一个新变量。对于这个新变量,我想从三个变量中获取值:Var1、Var2和Var3。条件是 NewVar=如果Var3不是NA,则为Var3,否则为Var2 如果Var2是NA,那么Var1。 简而言之,我的首要任务是Var3。如果是NA,那么我想去Var2。如果Var2也是NA,那么我想选择Var1。 我怎么能在R里做呢?我愿意使用基本方法、tidyverse甚至data.table。dplyr的合并函数是您的朋友。它需要从一组变量中选择第一个不丢失的值如何为R中的新列选择三个值之一?,r,R,我想在数据框中创建一个新变量。对于这个新变量,我想从三个变量中获取值:Var1、Var2和Var3。条件是 NewVar=如果Var3不是NA,则为Var3,否则为Var2 如果Var2是NA,那么Var1。 简而言之,我的首要任务是Var3。如果是NA,那么我想去Var2。如果Var2也是NA,那么我想选择Var1。 我怎么能在R里做呢?我愿意使用基本方法、tidyverse甚至data.table。dplyr的合并函数是您的朋友。它需要从一组变量中选择第一个不丢失的值 test <-
test <- data.frame(var3 = c(1, NA, NA),
var2 = c(10, NA, 30),
var1 = c(NA, 200, 300))
library(dplyr)
answer <- test %>%
mutate(answer = coalesce(var3, var2, var1))
可以使用嵌套的ifelse在baser中实现这一点
mydf <- data.frame(var3 = c("x", NA, NA),
var2 = c(NA, "y", NA),
var1 = c(NA, NA, "z"))
mydf$new.col <- ifelse(!(is.na(mydf$var3)), mydf$var3, ifelse(!(is.na(mydf$var2)), mydf$var2,ifelse(!(is.na(mydf$var1)), mydf$var1,"NA")))
mydf
你能给出你的样本数据集来做这件事吗?dput功能将有助于复制和粘贴在这个网站上的样本。