Предположим, у нас есть следующие данные с именами столбцов "id", "time" и "x":
df<-
structure(
list(
id = c(1L, 1L, 1L, 2L, 2L, 3L, 3L),
time = c(20L, 6L, 7L, 11L, 13L, 2L, 6L),
x = c(1L, 1L, 0L, 1L, 1L, 1L, 0L)
),
.Names = c("id", "time", "x"),
class = "data.frame",
row.names = c(NA,-7L)
)
Каждый идентификатор имеет несколько наблюдений для времени и х. Я хочу извлечь последнее наблюдение для каждого идентификатора и сформировать новый фрейм данных, который повторяет эти наблюдения в соответствии с количеством наблюдений на каждый идентификатор в исходных данных. Я могу извлечь последние наблюдения для каждого идентификатора, используя следующие коды
library(dplyr)
df<-df%>%
group_by(id) %>%
filter( ((x)==0 & row_number()==n())| ((x)==1 & row_number()==n()))
Что остается нерешенным, так это аспект повторения. Ожидаемый результат будет выглядеть как
df <-
structure(
list(
id = c(1L, 1L, 1L, 2L, 2L, 3L, 3L),
time = c(7L, 7L, 7L, 13L, 13L, 6L, 6L),
x = c(0L, 0L, 0L, 1L, 1L, 0L, 0L)
),
.Names = c("id", "time", "x"),
class = "data.frame",
row.names = c(NA,-7L)
)
Спасибо за вашу помощь заранее.