Я пытаюсь вычислить разницу / продолжительность между первой и n строками фрейма данных, которые совпадают в одном столбце. Я хочу поместить это значение в новый столбец «Продолжительность». Примеры данных: ниже.
y <- data.frame(c("USA", "USA", "USA", "France", "France", "Mexico", "Mexico", "Mexico"), c(1992, 1993, 1994, 1989, 1990, 1999, 2000, 2001))
colnames(y) <- c("Country", "Year")
y$Year <- as.integer(y$Year) # this is to match the class of my actual data
Мой желаемый результат:
1992 USA 0
1993 USA 1
1994 USA 2
1989 France 0
1990 France 1
1999 Mexico 0
2000 Mexico 1
2001 Mexico 2
Я пробовал использовать dplyr group_by и изменить
y <- y %>% group_by(Country) %>% mutate(duration = Year - lag(Year))
но я могу получить только фактический год задержки (например, 1999) или только вычислить разницу между последовательными строками, получив либо NA для первой строки страны, либо 1 для всех других строк с той же страной. Многие q & a's сосредоточены на разница между последовательными строками, а не между первой и n строк.
Мысли?
with(y, ave(seq_along(Year), Country, FUN = seq_along)-1)
или если это разницаy %>% group_by(Country) %>% mutate(duration = Year - first(Year))
- person akrun   schedule 08.10.2016