如何在r中找到大于某个值的组值中的最小值

时间:2018-01-09 22:05:14

标签: r grouping minimum group-summaries

我有以下数据框:

  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。

3 个答案:

答案 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