使用;ifelse“;和/或;联合;在R中将3个变量的数据合并为一个变量

使用;ifelse“;和/或;联合;在R中将3个变量的数据合并为一个变量,r,tidyr,R,Tidyr,我的目标是将目前在三个变量中呈现的信息合并为一个变量,以创建一个“整洁”的数据集 数据框架中有三个变量指示一个物种的饮食类型:肉食动物、草食动物和杂食动物。数据表示为“是”或“NA”,其中“是”用于表示饮食类型,而“NA”用于表示该物种不属于的两种类型。我希望使用ifelse函数创建一个新的变量“diet type”,该变量本质上是数字(0,1,2),或者是一个字符向量“Carnivore”,“Herbivore”,“Omnivore”,但在尝试运行代码时会继续出错 动物多样性\u原始%>% 突

我的目标是将目前在三个变量中呈现的信息合并为一个变量,以创建一个“整洁”的数据集

数据框架中有三个变量指示一个物种的饮食类型:肉食动物、草食动物和杂食动物。数据表示为“是”或“NA”,其中“是”用于表示饮食类型,而“NA”用于表示该物种不属于的两种类型。我希望使用
ifelse
函数创建一个新的变量“diet type”,该变量本质上是数字(0,1,2),或者是一个字符向量“Carnivore”,“Herbivore”,“Omnivore”,但在尝试运行代码时会继续出错

动物多样性\u原始%>% 突变(动物多样性、生食、饮食=ifelse(食肉动物=YES,食草动物=NA,1), 如果其他情况(食肉动物==“NA”和食草动物==“是”,“2”), ifelse(食肉动物==“是”和杂食动物==“不”、“3”))

错误是: ifelse中出错(动物多样性原始$Carnivore==“是”&动物多样性原始$Herbivore==: 缺少参数“否”,没有默认值


感谢您的关注!

问题是嵌套的
ifelse
结束括号应该在末尾

animal_diversity_raw %>%
  mutate(diet= ifelse(Carnivore== "YES" & Herbivore== "NA", "1", 
               ifelse(Carnivore== "NA" & Herbivore== "YES", "2", 
               ifelse(Carnivore== "YES" & Omnivore== "NA", "3"))))

注意:这里,我们假设缺少的值为字符串
“NA”
。通常,它是不带引号的,可以用is.na检查。谢谢你的帮助!我已经将代码改为:animal_diversity_new@sehoskins,正如我在帖子中提到的。如果你有不带引号的
na
,如果你可以通过编辑在帖子中展示一个小的可复制的例子,你需要
is.na
(最好使用
dput(head(animal_divierity_raw))
,我可以得到结构