Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- library(dplyr)
- df <- data.frame(grp_A = c(13, NA, NA, NA, NA, 20, NA),
- grp_B = c(NA, 59, 66, NA, NA, NA, NA),
- grp_C = c(NA, NA, NA, 23, 42, NA, NA))
- df$value <- apply(select(df, grp_A, grp_B, grp_C), 1,
- function(x) x[!is.na(x)])
- df$value <- df[cbind(1:nrow(df), max.col(!is.na(df)))]
- df
- # grp_A grp_B grp_C value
- #1 13 NA NA 13
- #2 NA 59 NA 59
- #3 NA 66 NA 66
- #4 NA NA 23 23
- #5 NA NA 42 42
- #6 20 NA NA 20
- #7 NA NA NA NA
- max.col(!is.na(df))
- #[1] 1 2 2 3 3 1 2
- library(dplyr)
- df <- data.frame(grp_A = c(13, NA, NA, NA, NA, 20, NA),
- grp_B = c(NA, 59, 66, NA, NA, NA, NA),
- grp_C = c(NA, NA, NA, 23, 42, NA, NA))
- mutate(df, value = Reduce(coalesce, df))
- grp_A grp_B grp_C value
- 1 13 NA NA 13
- 2 NA 59 NA 59
- 3 NA 66 NA 66
- 4 NA NA 23 23
- 5 NA NA 42 42
- 6 20 NA NA 20
- 7 NA NA NA NA
- df$value <- rowSums(df, na.rm = T)
- df[df$value == 0, ] <- NA
Add Comment
Please, Sign In to add comment