Предполагая, что входные данные в примечании в конце объединяют фрейм входных данных с фреймом данных всех лет и используют na.locf
из зоопарка, чтобы заполнить его.
library(zoo)
Year <- data.frame(Year = min(DF$Year):2015)
m <- na.locf(merge(DF, Year, all.y = TRUE), na.rm = FALSE)
(продолжение после вывода):
> m
Year Result Event Gender
1 1982 31.35 10000m women
2 1983 31.35 10000m women
3 1983 31.28 10000m women
4 1984 31.14 10000m women
5 1985 30.59 10000m women
6 1986 30.14 10000m women
7 1987 30.14 10000m women
8 1988 30.14 10000m women
9 1989 30.14 10000m women
10 1990 30.14 10000m women
11 1991 30.14 10000m women
12 1992 30.14 10000m women
13 1993 29.32 10000m women
14 1994 29.32 10000m women
15 1995 29.32 10000m women
16 1996 29.32 10000m women
17 1997 29.32 10000m women
18 1998 29.32 10000m women
19 1999 29.32 10000m women
20 2000 29.32 10000m women
21 2001 29.32 10000m women
22 2002 29.32 10000m women
23 2003 29.32 10000m women
24 2004 29.32 10000m women
25 2005 29.32 10000m women
26 2006 29.32 10000m women
27 2007 29.32 10000m women
28 2008 29.32 10000m women
29 2009 29.32 10000m women
30 2010 29.32 10000m women
31 2011 29.32 10000m women
32 2012 29.32 10000m women
33 2013 29.32 10000m women
34 2014 29.32 10000m women
35 2015 29.32 10000m women
или, если у всего файла есть несколько событий и полов, разделите его по событиям и полу и примените одинаковую обработку к каждому компоненту разделения, связав его вместе в конце.Из этого вопроса нельзя сказать, поэтому мы предположили, что каждое событие / пол должно начинаться с минимального года для всех событий и полов и заканчиваться в 2015 году, но это предположение можно легко изменить.
f <- function(x) na.locf(merge(x, Year, all.y = TRUE), na.rm = FALSE)
out <- do.call("rbind", by(DF, DF[3:4], f))
rownames(out) <- NULL
Примечание
Lines <- "
Result Year Event Gender
1 31.35 1982 10000m women
2 31.35 1983 10000m women
3 31.28 1983 10000m women
4 31.14 1984 10000m women
5 30.59 1985 10000m women
6 30.14 1986 10000m women
7 29.32 1993 10000m women"
DF <- read.table(text = Lines)