如何根据 r 中的条件使用选定的行创建新的 df?

How do I make a new df with selected rows based on a condition in r?

我有一个包含许多会话的 df,这将导致转换。我想用包含转换的所有行创建一个新的 df。

我的 df 看起来像:

 Sessionid       Clientid        Conversion_type
    1                1                 No_conv
    2                1                 No_conv
    3                1                 Online
    4                2                 No_conv
    5                2                 Offline

我想要一个新的 df,如下所示:

Session Id       Clientid        Conversion_type
    3                1                  Online
    5                2                  Offline

还有一个日期列,所以我想如果我在 Client_id 上订购,它会自动在这些 ID 的日期订购。然后,我可以 select 包含 Clientid 尾部值的行。但是,这不起作用。

我希望有人能帮我解决这个问题。

我们可以使用比较运算符来获取 'Conversion_type' 不等于 'No_conv'

的行的子集
df2 <- subset(df1, Conversion_type != 'No_conv')
df2
#     Sessionid Clientid Conversion_type
#3         3        1          Online
#5         5        2         Offline

或者如果它是基于位置的,即需要每个 'Clientid' 的最后一行,使用 duplicatedsubset 中创建一个逻辑向量以对行 [=19] 进行子集化=]

subset(df1, !duplicated(Clientid, fromLast = TRUE))
# Sessionid Clientid Conversion_type
#3         3        1          Online
#5         5        2         Offline

或使用 dplyr,我们可以按 'Clientid' 和 slice 最后一行 (n())

进行分组
library(dplyr)
df1 %>%
  group_by(Clientid) %>%
  slice(n())

数据

df1 <- structure(list(Sessionid = 1:5, Clientid = c(1L, 1L, 1L, 2L, 
2L), Conversion_type = c("No_conv", "No_conv", "Online", "No_conv", 
"Offline")), class = "data.frame", row.names = c(NA, -5L))