我有以下数据框:
PATIENT_ID VALUE
1 8
1 16
1 24
2 50
2 56
3 2
3 70
现在我想找到最小值大于48的所有PATIENT_ID。在这个例子中,患者1,2,3的最小值分别为8,40和2。因此,它应该只返回PATIENT_ID = 2,因为这是唯一一个最小值大于48的PATIENT_ID。
答案 0 :(得分:2)
unique(your_df[your_df$VALUE > 48, "PATIENT_ID"])
答案 1 :(得分:1)
有很多方法可以做到这一点。一种方法是首先过滤掉与您的条件不匹配的行,然后返回剩余行的PATIENT_ID。
df <- df[df$value > 48,]
df$PATIENT_ID
答案 2 :(得分:-1)
允许使用by
进行分组:
by(data = df, INDICES = df$PATIENT_ID, FUN = function(x){ifelse(min(x$VALUE) > 48, min(x$VALUE), FALSE)})
给出:
df$PATIENT_ID: 1
[1] 0
-------------------------------------------------------------------------------------------
df$PATIENT_ID: 2
[1] 50
-------------------------------------------------------------------------------------------
df$PATIENT_ID: 3
[1] 0