1

我有以下数据框:

  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。

4

3 回答 3

2
unique(your_df[your_df$VALUE > 48, "PATIENT_ID"])
于 2018-01-09T22:11:56.447 回答
1

有很多方法可以做到这一点。一种方法是首先过滤掉与您的条件不匹配的行,然后返回剩余行的 PATIENT_ID。

df <- df[df$value > 48,]
df$PATIENT_ID
于 2018-01-09T22:16:00.937 回答
-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
于 2018-01-09T22:29:28.793 回答