【发布时间】:2020-11-07 03:55:11
【问题描述】:
我有一个包含 1000 行和 4 列的数据框,其中数据框有 100 个 ID。
数据框如下所示:
abc <- data.frame(ID = c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2),
A = c(12,12.5,15,16,18,20,25,26,29,35, 12,12.5,15,16,18,20,25,26,29,35),
B = c(20,19,18,17,16,20,25,28,30,35, 20,19,18,17,16,20,25,28,30,35),
C = c(2,1,5,9,10,11,13,18,25,27,2,1,5,9,10,11,13,18,25,27))
这里,第一个条件是从'B'列中选择关于ID的最小值并选择对应的第A列(即对于min(B) = 16,对于ID-1,A = 18)。
第二个条件是从'C'列中选择关于ID的最小值,并选择对应的第A列(即对于min(C) = 1,对于ID-1,A = 12.5)
最后,我想根据 ID 对数据框(从 A = 12.5 到 A = 18)进行子集化
预期/期望的输出数据帧如下
abcd <- data.frame(ID = c(1,1,1,1,2,2,2,2),
A = c(12.5,15,16,18,12.5,15,16,18),
B = c(19,18,17,16,19,18,17,16),
C = c(1,5,9,10,1,5,9,10))
我已经尝试了如下代码
library(plyr)
e <- ddply(abc, .(ID), function(z) {
z[z$dmin(abs(z$C)) : min(abs(z$B)), ]
})
但未能获得所需的输出
【问题讨论】:
标签: r database dataframe data-manipulation