如何在r中找到大于特定值的组内最小值

How to find minimum within group value greater than certain value in r

我有以下数据框:

  PATIENT_ID VALUE
  1          8
  1          16
  1          24 
  2          50 
  2          56
  3          2
  3          70

现在我想找到所有 PATIENT_IDs 的最小值大于 48。在这个例子中,患者 1、2、3 的最小值分别是 8、40 和 2。因此,它应该 return 仅 PATIENT_ID = 2,因为这是唯一一个最小值大于 48 的 PATIENT_ID。

unique(your_df[your_df$VALUE > 48, "PATIENT_ID"])

有很多方法可以做到这一点。一种方法是先过滤掉不符合条件的行,然后 return 剩余行的 PATIENT_IDs。

df <- df[df$value > 48,]
df$PATIENT_ID

允许分组 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