将变量组合到R中的一个变量中

时间:2014-09-29 09:50:00

标签: r reshape

在Windows上使用R 3.1。如何将变量a.1a.2a.3合并到一个变量a中,排除缺失值。

library(reshape2)
dat <- data.frame(id = 1:5,
                  a.1 = c(1,rep(NA,4)),
                  a.2 = c(NA,1, rep(NA,3)),
                  a.3 = c(NA,NA,1,1, NA),
)

我尝试过使用但在

中提供了NA个值
dat$a <- paste(dat$conf.1,dat$conf.2,dat$conf.3, sep = "")

 id a.1 a.2 a.3      a
1  1   1  NA  NA  1NANA
2  2  NA   1  NA  NA1NA
3  3  NA  NA   1  NANA1
4  4  NA  NA   1  NANA1
5  5  NA  NA  NA NANANA

2 个答案:

答案 0 :(得分:2)

一种(愚蠢的)方式就像

dat$a <- as.numeric(apply(dat[, -1], 1, function(x) x[!is.na(x)]))
dat
#   id a.1 a.2 a.3  a
# 1  1   1  NA  NA  1
# 2  2  NA   1  NA  1
# 3  3  NA  NA   1  1
# 4  4  NA  NA   1  1
# 5  5  NA  NA  NA NA

或更一般(如果每列有多个值)

dat$a <- as.numeric(apply(dat[, -1], 1, function(x) paste(x[!is.na(x)], collapse = ",")))

答案 1 :(得分:0)

也许是这样的:

gsub(' |NA','',do.call(paste,dat))

1] "11" "21" "31" "41" "5"