如何在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
我有以下数据框:
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