首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当dplyr和ifelse一起使用时,为什么r显示错误?

当dplyr和ifelse一起使用时,为什么r显示错误?
EN

Stack Overflow用户
提问于 2020-01-10 23:29:15
回答 2查看 61关注 0票数 1

我尝试在R分组中使用"ifelse“函数,但它不起作用。我的数据是这样的:

代码语言:javascript
复制
Breed Animal
NOR    1  
NOR    1
SWE    1
HOL    2
NOR    2
NOR    3
NOR    3

所以我想创建一个新的变量,称为"comp“,在这个变量中,如果动物的品种总是NOR,它就是纯种的,如果不是,它就是混血的。data.frame被称为NOR,我使用的代码是:

代码语言:javascript
复制
NOR %>%
group_by (animal) %>%%
mutate(comp= ifelse(NOR$breed == "NOR", "purebred","admixed")

但是我有这个错误:错误:列'comp‘的长度必须是28 (组大小)或1,而不是1104。

我需要的输出是:

代码语言:javascript
复制
Breed Animal comp  
NOR     1     admixed
NOR     1     admixed
SWE     1     admixed
HOL     2     admixed
NOR     2     admixed
NOR     3     purebred
NOR     3     pubebred

提前感谢!:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-11 02:40:40

在这种情况下,我们可以使用if/else,因为输入是单个TRUE/FALSE值

代码语言:javascript
复制
library(dplyr)
df %>%
     group_by(Animal) %>% 
     mutate(comp = if(all(Breed == "NOR")) "purebred" else "admixed")
# A tibble: 7 x 3
# Groups:   Animal [3]
#  Breed Animal comp    
#  <chr>  <dbl> <chr>   
#1 NOR        1 admixed 
#2 NOR        1 admixed 
#3 SWE        1 admixed 
#4 HOL        2 admixed 
#5 NOR        2 admixed 
#6 NOR        3 purebred
#7 NOR        3 purebred

数据

代码语言:javascript
复制
df <- structure(list(Breed = c("NOR", "NOR", "SWE", "HOL", "NOR", "NOR", 
"NOR"), Animal = c(1, 1, 1, 2, 2, 3, 3)), row.names = c(NA, -7L
), class = c("tbl_df", "tbl", "data.frame"))
票数 1
EN

Stack Overflow用户

发布于 2020-01-10 23:38:07

示例数据。

代码语言:javascript
复制
df <- tibble(
   "Breed" = c(rep("NOR", 2), "SWE", "HOL", rep("NOR", 3)),
   "Animal" = c(rep(1, 3), rep(2, 2), rep(3, 2))
)

> df
# A tibble: 7 x 2
  Breed Animal
  <chr>  <dbl>
1 NOR        1
2 NOR        1
3 SWE        1
4 HOL        2
5 NOR        2
6 NOR        3
7 NOR        3

而不是'NOR$breed',您只需要'Breed‘即可。您还希望将条件包装在“all”中。

代码语言:javascript
复制
df %>%
   group_by(Animal) %>%
   mutate(comp = ifelse(all(Breed == "NOR"), "purebred", "admixed"))

# A tibble: 7 x 3
# Groups:   Animal [3]
  Breed Animal comp    
  <chr>  <dbl> <chr>   
1 NOR        1 admixed 
2 NOR        1 admixed 
3 SWE        1 admixed 
4 HOL        2 admixed 
5 NOR        2 admixed 
6 NOR        3 purebred
7 NOR        3 purebred
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59684597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档