Dense Rank or number by group by condition 忽略不符合条件的值

Dense Rank or number by group by condition ignoring values that don't meet condition

我有下面的数据集示例:

name   date           value1 

grape  01-01-2018     127

grape  01-02-2018     124

grape  01-03-2018     154

grape  01-04-2018        

grape  01-05-2018     123

pear   01-01-2018     324

pear   01-02-2018     374

pear   01-03-2018        

pear   01-04-2018     312

期望输出:

name   date          value1 producing days

grape  01-01-2018     127      1

grape  01-02-2018     124      2

grape  01-03-2018     154      3

grape  01-04-2018               

grape  01-05-2018     123      4

pear   01-01-2018     324      1

pear   01-02-2018     374      2

pear   01-03-2018               

pear   01-04-2018     312      3

我试过:

df2 <- df2 %>% 
  group_by(NAME) %>% 
  mutate(Producing_Days = dense_rank(Date))

我试过了

df2 <- df2 %>% 
  group_by(NAME) %>% 
  mutate(Producing_Days = dense_rank(Date))

和 seq along and nrow 但我无法让他们跳过没有价值的日子

试试这个:您可以将 is.na 替换为 value1==""

@demarsylvain 建议后的最终答案

 df %>% group_by(name) %>% 
 mutate(Producing_days = ifelse(is.na(value1), NA,as.character(Date)) %>% 
          dense_rank())