在Windows上使用R 3.1
。如何将变量a.1
,a.2
和a.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
答案 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"