Recoding missing data in longitudinal data frames with R -
i have data frame similar longitudinal structure data
:
data = data.frame ( id = c("a","a","a","b","b","b","c","c", "c"), period = c(1,2,3,1,2,3,1,2,3), size = c(3,3,na, na, na,1, 14,14, 14))
the values of variable size
fixed each period has same value size
. yet observations have missing values. aim consists of replacing these missing values value of size
associated periods there no missing (e.g. 3 id
"a" , 1 id
"b").
the desired data frame should similar to:
data.1 id period value 1 3 2 3 3 3 b 1 1 b 2 1 b 3 1 c 1 14 c 2 14 c 3 14
i have tried different combinations of formula below don't result looking for.
library(dplyr) data.1 = data %>% group_by(id) %>% mutate(new.size = ifelse(is.na(size), !is.na(size), ifelse(!is.na(size), size, 0)))
that yields following:
data.1 source: local data frame [9 x 4] groups: id [3] id period size new.size (fctr) (dbl) (dbl) (dbl) 1 1 3 3 2 2 3 3 3 3 na 0 4 b 1 na 0 5 b 2 na 0 6 b 3 1 1 7 c 1 14 14 8 c 2 14 14 9 c 3 14 14
i grateful if give me hint on how right solution.
here solution using dplyr
na.omit
group_by(data, id) %>% mutate(value=na.omit(size)[1]) source: local data frame [9 x 4] groups: id [3] id period size value <fctr> <dbl> <dbl> <dbl> 1 1 3 3 2 2 3 3 3 3 na 3 4 b 1 na 1 5 b 2 na 1 6 b 3 1 1 7 c 1 14 14 8 c 2 14 14 9 c 3 14 14
note can replace na.omit
max(size, na.rm=true)
if looking maximum example.
Comments
Post a Comment