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())
我有下面的数据集示例:
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())