【发布时间】:2019-12-11 16:59:19
【问题描述】:
当turbidity 值最接近我的数据框df 中的0.7 时,我想过滤time。然后我想利用这段时间来filter 为另外两个parameters 提供每组最近的时间。
示例
原始数据
print(df)
sample time parameter measurement
1 apple 0.000 turbidity 0.153
2 apple 13.805 turbidity 0.654
3 apple 16.586 turbidity 0.724 * Closest to 0.7
4 apple 25.354 turbidity 0.821
5 apple 0.000 glucose 34.100
6 apple 13.548 glucose 29.500
7 apple 17.254 glucose 17.300 ** Closest time when turbidity measurement is closest to 0.7
8 apple 24.893 glucose 4.100
9 apple 0.000 muconate 0.000
10 apple 13.412 muconate 3.500
11 apple 17.647 muconate 9.600 ** Closest time when turbidity measurement is closest to 0.7
12 apple 25.841 muconate 13.400
13 orange 0.000 turbidity 0.116
14 orange 12.655 turbidity 0.689 * Closest to 0.7
15 orange 14.214 turbidity 0.715
16 orange 32.687 turbidity 0.899
17 orange 0.000 glucose 35.600
18 orange 12.021 glucose 28.700 ** Closest time when turbidity measurement is closest to 0.7
19 orange 15.687 glucose 16.400
20 orange 33.641 glucose 3.700
21 orange 0.000 muconate 0.000
22 orange 13.365 muconate 3.200 ** Closest time when turbidity measurement is closest to 0.7
23 orange 18.259 muconate 8.500
24 orange 35.697 muconate 14.100
期望的输出
过滤turbidity 值最接近0.7 的行,但根据最接近的time 值将它们按sample 分组。
sample time parameter measurement
1 apple 16.6 turbidity 0.724
2 apple 17.254 glucose 17.300
3 apple 17.647 muconate 9.600
4 orange 12.7 turbidity 0.689
5 orange 12.021 glucose 28.700
6 orange 13.365 muconate 3.200
尝试失败
df %>% group_by(sample) %>%
filter(parameter == "turbidity") %>%
slice(which.min(abs(measurement - 0.7)))
sample time parameter measurement
1 apple 16.6 turbidity 0.724
2 orange 12.7 turbidity 0.689
【问题讨论】: