gpt4 book ai didi

r - 按组查找特定日期上下最接近的值

转载 作者:行者123 更新时间:2023-12-04 07:52:51 25 4
gpt4 key购买 nike

我有一个纵向测量数据框,我正在寻找在某个日期之上和之下进行的最接近的测量。我的日期列被编码为自研究开始以来的天数。
对于每个参与者,我想找到一个在研究的 100 天以下的最接近值的测量值和在研究的 100 天以上的最接近的值的一个测量值。如果参与者在 100 天时进行测量,那么我希望返回该值。
我的数据框如下所示:

df <- data_frame(id = c(1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3), 
measures = c(10, 11, 11.4, 11.7, 11.8, 4.1, 4.3, 4.7, 13.3, 13.2, 13.5, 13.9, 14, 14.1),
days = c(5, 45, 60, 94, 104, 21, 76, 115, 10, 26, 73, 100, 132, 154))

df
# id measures days
# 1 10 5
# 1 11 45
# 1 11.4 60
# 1 11.7 94
# 1 11.8 104
# 2 4.1 21
# 2 4.3 76
# 2 4.7 115
# 3 13.3 10
# 3 13.2 26
# 3 13.5 73
# 3 13.9 100
# 3 14 132
# 3 14.1 154
对于 ID 1,我希望它返回第 94 天和第 104 天以及测量值 11.7 和 11.8。对于 ID 2,我希望它返回第 76 天和第 115 天以及测量值 4.3 和 4.7。对于 ID 3,我希望它两次返回第 100 天,两次返回测量值 13.9。
这是我到目前为止所拥有的:
library(dplyr)
df %>% group_by(id) %>%
summarise(below = max(df$days[df$days <= 100]),
above = min(df$days[df$days >= 100]),
below_msrmt = df$measures[which(df$days == below)],
above_msrmt = df$measures[which(df$days == above)])
但看起来代码没有读取 group_by 参数,因为它一直给我这个:
# id below above below_msrmt above_msrmt
# 1 100 100 13.9 13.9
# 2 100 100 13.9 13.9
# 3 100 100 13.9 13.9
谁能帮我这个?

最佳答案

如果我们删除 df$ ,它有效,因为 df$daysdf$measures选择整个列,而不仅仅是每个组中该列的值。因此,我们为所有组获得相同的值,因为它是整个列的汇总值

df %>% group_by(id) %>% 
summarise(below = max(days[days <= 100]),
above = min(days[days >= 100]),
below_msrmt = measures[which(days == below)],
above_msrmt = measures[which(days == above)])

关于r - 按组查找特定日期上下最接近的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66862867/

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