dplyr分组帮助,如何基于另一列的值从另一列中选择值,如果为空则替换为N / A

时间:2019-05-08 15:23:05

标签: r dplyr

我有一个包含以下列的数据框

userid:用户的唯一值

transactionId:交易的唯一值(用户可以有许多不同的订单)

created_at:创建订单的日期

网页:用户创建该订单的网页(用户可能针对不同的订单拥有不同的页面,也可以为空)

我正在使用下面的代码按用户ID进行分组,以获取一些用户ID变量,但是在对它进行分组后,我还需要一个变量,称为“第一页”

该变量将是用户拥有的第一个网页,换句话说,该用户ID的网页值,其中created_at的最小值,如果在其created_at的最小值上没有该网页的值,则使用“ N / A”作为该用户ID的值

df_RFM <- data2 %>% group_by(user_id) %>% 
      summarise(recency = as.numeric(as.Date("2019-02-21")-max(created_at)),
                frequenci = n_distinct(transactionId), 
                monetary = sum(total_in_pennies)/n_distinct(transactionId), 
                last_active = max(created_at), 
                min(transactionId))

请帮助创建该“首页”变量,谢谢。

1 个答案:

答案 0 :(得分:0)

使用 df_RFM <- data2 %>% group_by(user_id) %>% arrange(.,created_at, .by_group = TRUE)对created_at变量进行排序,然后可以使用slice获取每个userID的第一行。使用该功能,您可以根据网页值mutate新建一个列。