gpt4 book ai didi

r - 按 r 中最早的日期和 id 的条件

转载 作者:行者123 更新时间:2023-12-03 23:34:59 27 4
gpt4 key购买 nike

我想写一个条件,例如选择 V2 == "B" 但前提是 "B" 根据它所属的日期是最旧的id (V1).

library(data.table)
dt <- data.table(id <- c(rep(1,3),
rep(2,2),
rep(3,2)),
condition <- c(rep("A",2), "B",
"B","B",
"B","A"),
dates <- c("2018-01-20", "2018-01-03","2017-01-01",
"2018-05-02", "2018-04-01",
"2018-05-01", "2018-01-01")
)

# Result
# V1 V2 V3
#1: 1 A 2018-01-20
#2: 1 A 2018-01-03
#3: 1 B 2017-01-01
#4: 2 B 2018-05-02
#5: 2 B 2018-04-01
#6: 3 B 2018-05-01
#7: 3 A 2018-01-01

想要的结果应该是这个:

#   V1 V2         V3
#3: 1 B 2017-01-01
#5: 2 B 2018-04-01

如您所见,第 6 行不在我最终想要的结果中,因为 "B" 不是最旧的条件,但 "A" 是。

谢谢

最佳答案

我们可以创建索引并使用索引进行提取

dt[dt[,  .(ind = .I[V2 == 'B' & V3 == min(as.Date(V3))]), V1]$ind]
# V1 V2 V3
#1: 1 B 2017-01-01
#2: 2 B 2018-04-01

或者更简洁

 dt[, .SD[V3 == min(as.Date(V3)) & V2 == 'B'], by = V1]

关于r - 按 r 中最早的日期和 id 的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60857171/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com