Hello,
Try the following. I've called your data.frames 'dat' and 'dat2'
# First your datasets, see ?dput
dput(dat)
structure(list(idr = c(1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), schyear = c(8L, 9L,
10L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L), year = c(0L, 1L, NA, NA, -1L, 0L, 1L, 2L, 3L,
4L, NA, 6L, NA, -2L, -1L, 0L, 1L, 2L, 3L, NA)), .Names = c("idr",
"schyear", "year"), class = "data.frame", row.names = c(NA, -20L
))
dput(dat2)
structure(list(idr = c(1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), schyear = c(8L, 9L,
10L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L), year = c(0L, 1L, 2L, -2L, -1L, 0L, 1L, 2L, 3L,
4L, 5L, 6L, -3L, -2L, -1L, 0L, 1L, 2L, 3L, 4L)), .Names = c("idr",
"schyear", "year"), class = "data.frame", row.names = c(NA, -20L
))
# Now the code
fun <- function(x){
for(i in which(is.na(x$year))){
if(i == 1)
x$year[i] <- x$year[i + 1] - 1L
else
x$year[i] <- x$year[i - 1] + 1L
}
x
}
result <- do.call(rbind, lapply(split(dat, dat$idr), fun))
all.equal(result, dat2)
Hope this helps,
Rui Barradas
Em 03-11-2012 17:14, Christopher Desjardins escreveu:
Hi,
I have the following data:
data[1:20,c(1,2,20)]
idr schyear year
1 8 0
1 9 1
1 10 NA
2 4 NA
2 5 -1
2 6 0
2 7 1
2 8 2
2 9 3
2 10 4
2 11 NA
2 12 6
3 4 NA
3 5 -2
3 6 -1
3 7 0
3 8 1
3 9 2
3 10 3
3 11 NA
What I want to do is replace the NAs in the year variable with the
following:
idr schyear year
1 8 0
1 9 1
1 10 2
2 4 -2
2 5 -1
2 6 0
2 7 1
2 8 2
2 9 3
2 10 4
2 11 5
2 12 6
3 4 -3
3 5 -2
3 6 -1
3 7 0
3 8 1
3 9 2
3 10 3
3 11 4
I have no idea how to do this. What it needs to do is make sure that for
each subject (idr) that it either adds a 1 if it is preceded by a value in
year or subtracts a 1 if it comes before a year value.
Does that make sense? I could do this in Excel but I am at a loss for how
to do this in R. Please reply to me as well as the list if you respond.
Thanks!
Chris
[[alternative HTML version deleted]]
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.