我想为"sp.name"(分组变量)创建一个"new column",其中"number"中的值同时存在于"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"相关的值。
预期输出:
| 姓名|数|级|新建列|
| - ------|- ------|- ------|- ------|
| 项目a|第二章|成虫|第二章|
| 项目a|第二章|青年|无|
| b.人口基金|三个|青年|无|
| b.人口基金|三个|成虫|三个|
| (c)秘书长的报告|四个|成虫|无|
| 日|四个|青年|无|
4条答案
按热度按时间1bqhqjot1#
e5njpo682#
使用ifelse条件:
krcsximq3#
您需要具有
stage == "young"
和"adult"
(组级条件)以及stage == "adult"
(行级条件)的any
组:hs1rzwqc4#
使用
data.table