[R] Replace missing value within group with non-missing value
Leask, Graham
g.leask at aston.ac.uk
Sat Apr 6 16:34:13 CEST 2013
Hi Rui,
Thank you for your suggestion which is very much appreciated. Unfortunately running this code produces the following error.
error in '$<-.data.frame' ('*tmp*', "mth", value = NA_real_) :
replacement has 1 rows, data has 0
I'm sure there must be an elegant solution to this problem?
Best wishes
Graham
On 6 Apr 2013, at 12:15, "Rui Barradas" <ruipbarradas at sapo.pt> wrote:
> Hello,
>
> That's not a very good way of posting your data, preferably paste the output of ?dput in a post.
> Some thing along the lines of the following might do what you want. It seems that the groups are established by 'dn' and 'obs' numbers. If so, try
>
>
> # Make up some data
> dat <- data.frame(dn = 4, obs = rep(1:5, each = 6), mth = NA)
> dat$mth[6] <- 487
> dat$mth[9] <- 488
> dat$mth[18] <- 488
> dat$mth[21] <- 489
> dat$mth[30] <- 489
>
>
> sp <- split(dat, list(dat$dn, dat$obs))
> names(sp) <- NULL
> tmp <- lapply(sp, function(x){
> idx <- which(!is.na(x$mth))[1]
> x$mth <- x$mth[idx]
> x
> })
> do.call(rbind, tmp)
>
>
> Hope this helps,
>
> Rui Barradas
>
>
> Em 06-04-2013 11:33, Leask, Graham escreveu:
>> Dear List members
>>
>> I have a large dataset organised in choice groups see sample below
>>
>> +-------------------------------------------------------------------------------------------------+
>> | dn obs choice acid br date cdate situat~n mth year set |
>> |-------------------------------------------------------------------------------------------------|
>> 1. | 4 1 0 LOSEC 1 . . . . 1 |
>> 2. | 4 1 0 NEXIUM 2 . . . . 1 |
>> 3. | 4 1 0 PARIET 3 . . . . 1 |
>> 4. | 4 1 0 PROTIUM 4 . . . . 1 |
>> 5. | 4 1 0 ZANTAC 5 . . . . 1 |
>> |-------------------------------------------------------------------------------------------------|
>> 6. | 4 1 1 ZOTON 6 23aug2000 01:00:00 23aug2000 NS 487 2000 1 |
>> 7. | 4 2 0 LOSEC 1 . . . . 2 |
>> 8. | 4 2 0 NEXIUM 2 . . . . 2 |
>> 9. | 4 2 1 PARIET 3 25sep2000 01:00:00 25sep2000 L 488 2000 2 |
>> 10. | 4 2 0 PROTIUM 4 . . . . 2 |
>> |-------------------------------------------------------------------------------------------------|
>> 11. | 4 2 0 ZANTAC 5 . . . . 2 |
>> 12. | 4 2 0 ZOTON 6 . . . . 2 |
>> 13. | 4 3 0 LOSEC 1 . . . . 3 |
>> 14. | 4 3 0 NEXIUM 2 . . . . 3 |
>> 15. | 4 3 0 PARIET 3 . . . . 3 |
>> |-------------------------------------------------------------------------------------------------|
>> 16. | 4 3 0 PROTIUM 4 . . . . 3 |
>> 17. | 4 3 0 ZANTAC 5 . . . . 3 |
>> 18. | 4 3 1 ZOTON 6 20sep2000 00:00:00 20sep2000 R 488 2000 3 |
>> 19. | 4 4 0 LOSEC 1 . . . . 4 |
>> 20. | 4 4 0 NEXIUM 2 . . . . 4 |
>> |-------------------------------------------------------------------------------------------------|
>> 21. | 4 4 1 PARIET 3 27oct2000 00:00:00 27oct2000 NL 489 2000 4 |
>> 22. | 4 4 0 PROTIUM 4 . . . . 4 |
>> 23. | 4 4 0 ZANTAC 5 . . . . 4 |
>> 24. | 4 4 0 ZOTON 6 . . . . 4 |
>> 25. | 4 5 0 LOSEC 1 . . . . 5 |
>> |-------------------------------------------------------------------------------------------------|
>> 26. | 4 5 0 NEXIUM 2 . . . . 5 |
>> 27. | 4 5 0 PARIET 3 . . . . 5 |
>> 28. | 4 5 0 PROTIUM 4 . . . . 5 |
>> 29. | 4 5 0 ZANTAC 5 . . . . 5 |
>> 30. | 4 5 1 ZOTON 6 23oct2000 03:00:00 23oct2000 NS 489 2000 5 |
>>
>> I wish to fill in the missing values in each choice set - delineated by dn (Doctor) obs (Observation number) and choices (1 to 6).
>> For each choice set one choice is chosen which contains full time information for that choice set ie in set 1 choice 6 was chosen and
>> shows the month 487. The other 5 choices show mth as missing. I want to fill these with the correct mth.
>>
>> I am sure there must be an elegant way to do this in R?
>>
>>
>> Best wishes
>>
>>
>>
>> Graham
>>
>>
>> [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at 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.
>
More information about the R-help
mailing list