Плотный ранг или число по группам по условию, игнорируя значения, которые не соответствуют условию - PullRequest
0 голосов
/ 28 января 2019

У меня есть пример набора данных ниже:

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))

и следую за ним, но я не могу заставить их пропустить дни, которые не имеют значения

1 Ответ

0 голосов
/ 28 января 2019

Попробуйте: Вы можете заменить is.na на value1==""

Окончательный ответ после предложений @ demarsylvain

 df %>% group_by(name) %>% 
 mutate(Producing_days = ifelse(is.na(value1), NA,as.character(Date)) %>% 
          dense_rank())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...