Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为R中的新列选择三个值之一?_R - Fatal编程技术网

如何为R中的新列选择三个值之一?

如何为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 <-

我想在数据框中创建一个新变量。对于这个新变量,我想从三个变量中获取值:Var1、Var2和Var3。条件是 NewVar=如果Var3不是NA,则为Var3,否则为Var2 如果Var2是NA,那么Var1。 简而言之,我的首要任务是Var3。如果是NA,那么我想去Var2。如果Var2也是NA,那么我想选择Var1。 我怎么能在R里做呢?我愿意使用基本方法、tidyverse甚至data.table。

dplyr的合并函数是您的朋友。它需要从一组变量中选择第一个不丢失的值

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功能将有助于复制和粘贴在这个网站上的样本。