列的条件求和

时间:2017-02-11 16:18:01

标签: r

我有两列如下:

V1

我想在新列中添加V2 NA,只有当其中一个列中有V1时。否则我将取 V1 V2 col3 1 2344 122 2344 2 NA 322 322 3 100 NA 100 4 43 33 43 的价值。

预期产出:

TBB$col3<-ifelse(is.na(TBB$V1)|is.na(TBB$V2),sum(TBB$V1,TBB$V2),TBB$V1)

我试过了:

    V1  V2 col3
1 2344 122   NA
2   NA 322   NA
3  100  NA   NA
4   43  33   NA

但它给了我

django-admin startproject mysite

2 个答案:

答案 0 :(得分:1)

我们可以使用max.col

执行此操作
TBB$col3 <- TBB[,1:2][cbind(1:nrow(TBB), max.col(!is.na(TBB[,1:2]), "first"))]
TBB$col3
#[1] 2344  322  100   43

答案 1 :(得分:0)

结构值有些奇怪,因为它的rownames规范比任何列的值都要长,所以我修复了它然后我的代码成功了

python

使用!rowSums(is.na(。))的逻辑强制值,只有在没有NA的情况下才会为TRUE,在这种情况下你需要V1,否则你想要使用na.rm的TBB <- structure(list(V1 = c(2344, NA, 100, 43), V2 = c(122, 322, NA, 33), col3 = c(NA_real_, NA_real_, NA_real_, NA_real_)), .Names = c("V1", "V2", "col3"), row.names = c(NA, -4L), class = "data.frame") ifelse( !rowSums(is.na(TBB[1:2])), TBB$V1, rowSums(TBB, na.rm=TRUE) ) [1] 2344 322 100 43