根据以下行更改值

时间:2018-02-12 11:11:20

标签: r

我的数据集看起来像这样:

id  chan. conv.
1    5     0
1    8     0
2    3     0
2    5     0
2    4     0
2    7     1
3    6     0
3    3     0
3    7     1
4    3     0
4    8     0

基本上每当chan.栏中出现7时,就意味着产品已经售出,而当8出现时,这意味着它没有被出售。 id长度可能非常不同,我想知道如何删除7或8行,但更改上面的行,以便显示项目是否已转换。所以数据集看起来像这样:

id  chan. conv.
1    5     0
2    3     0
2    5     0
2    4     1
3    6     0
3    3     1
4    3     0

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

library(dplyr)

df %>% 
  mutate(conv. = lead(case_when(chan. == 7 ~ 1, TRUE ~ 0))) %>% 
  filter(chan. != 7 & chan. != 8)

如果您确定每次conv. == 7 chan.中的相应行等于1,您都可以跳过case_when步骤并尝试以下操作:

df %>% 
  mutate(conv. = lead(conv.)) %>% 
  filter(chan. != 7 & chan. != 8) 

返回:

  id chan. conv.
1  1     5     0
2  2     3     0
3  2     5     0
4  2     4     1
5  3     6     0
6  3     3     1
7  4     3     0