Вы можете использовать dplyr
для этого.Для каждого ID
первое (самое низкое Time_value_sec
значение) выбирается с использованием rank
и фильтра.
library(dplyr)
# Given your data
df1 <- structure(list(ID = c(1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 3L), BP = c(75L, 79L, 81L, 77L, 83L, 100L, 104L, 94L, 101L), Time_value_sec = c(10000L, 20000L, 30000L, 40000L, 50000L, 40000L, 30000L, 20000L, 50000L)), .Names = c("ID", "BP", "Time_value_sec"), class = "data.frame", row.names = c(NA, -9L))
# Filtering: Grab the first item for each ID
df1 %>%
group_by(ID) %>%
filter(rank(Time_value_sec, ties.method = "first") == 1)
# Output
## # A tibble: 3 x 3
## # Groups: ID [3]
## ID BP Time_value_sec
## <int> <int> <int>
## 1 1 75 10000
## 2 2 81 30000
## 3 3 94 20000
РЕДАКТИРОВАТЬ
Альтернативным способом являетсяследующее ниже.Это предполагает, что столбец Time_value_sec
имеет уникальные значения.
df1 %>%
group_by(ID) %>%
filter(Time_value_sec == min(Time_value_sec))