我想创建一个“新列”,其中仅包含“number”中的值,用于“sp.name”(分组变量),其中同时存在“young”和“adult”两个响应;如果不存在,则在“新列”中输入0。
df <- data.frame(sp.name= c('a','a', 'b', 'b' ,'c', 'd' ),
number=c(2,2,3, 3,4,4),
stage= c('adult', 'young', 'young','adult', 'adult', 'young'))
这是我尝试过的。
df %>%
group_by(sp.name) %>%
mutate(new_column = ifelse('young' %in% stage & 'adult' %in% stage,
number[stage == 'adult'], 0))
但是我的代码也将“年轻”(young)的值复制到了新列中,我只想要与“成人”(adult)相关的值。
期望输出:
name | number | stage | new_column |
---|---|---|---|
a | 2 | adult | 2 |
a | 2 | young | 0 |
b | 3 | young | 0 |
b | 3 | adult | 3 |
c | 4 | adult | 0 |
d | 4 | young | 0 |