标识符 | 变量 |
---|---|
病人1 | y |
病人2 | x |
病人2 | y |
病人2 | y |
病人3 | x |
病人3 | y |
我只想为每个标识符保留 1 行,但是对于出现 >1 次的标识符,我只想保留变量 == "x" 的行
我们可以使用
library(dplyr)
df1 %>%
slice(match("x", variable, nomatch = 1), .by = identifier)
-输出
identifier variable
1 patient1 y
2 patient2 x
3 patient3 x
有了
dplyr
,你可以使用slice_max
:
library(dplyr)
df %>%
slice_max(order_by = (variable == 'x'), by = identifier, with_ties = FALSE)
# identifier variable
# 1 patient1 y
# 2 patient2 x
# 3 patient3 x