合并两个整数列,保持NA

时间:2015-06-17 05:15:49

标签: r dplyr

我正在尝试组合两个整数列,但是,我想将NAs保留在第三列中,而不是将它们转换为0。

例如,

import sys
sys.dont_write_bytecode = True

创建

help <- data.frame(score.a = c(NA, NA, 2, 2, NA, NA, NA, NA, NA, NA, 2, NA),
               score.b = c(NA, NA, NA, NA, 4, 4, NA, NA, 4, 4, NA, 4))

我希望得到一个看起来像

的df
       score.a score.b
1       NA      NA
2       NA      NA
3        2      NA
4        2       4
5       NA       4
6       NA       4
7       NA      NA
8       NA      NA
9       NA       4
10      NA       4
11       2      NA
12      NA       4

数据没有重叠,但是当我使用rowSums或转换时,我最终在score.c中使用0而不是NA。我试图运行na.rm = T和na.rm = F无济于事。

1 个答案:

答案 0 :(得分:3)

您可以尝试pmaxpmin(根据显示的输入数据)

help$score.c <- do.call(pmax, c(help, na.rm=TRUE))
#help$score.c <- do.call(pmin, c(help, na.rm=TRUE))

help
#  score.a score.b score.c
#1       NA      NA      NA
#2       NA      NA      NA
#3        2      NA       2
#4        2      NA       2
#5       NA       4       4
#6       NA       4       4
#7       NA      NA      NA
#8       NA      NA      NA
#9       NA       4       4
#10      NA       4       4
#11       2      NA       2
#12      NA       4       4

或者使用row/col

max.col索引
help$score.c <- help[cbind(1:nrow(help),max.col(!is.na(help)))]

如果您需要使用rowSums,我们可以使用na.rm=TRUE选项,然后将0替换为NA,以获取同时包含“NAs”的行。

rowSums(help, na.rm=TRUE)*NA^!rowSums(!is.na(help))
#[1] NA NA  2  2  4  4 NA NA  4  4  2  4