我的数据集如下:
df <- data.frame(
A = c(-1, 2, 3),
B = c(1, 1, -1))
df
# A B
# 1 -1 1
# 2 2 1
# 3 3 -1
我试图获得以下结果,其中两个 A
时都保留值和 B
是积极的:
A B
1 NA NA
2 2 1
3 NA NA
我试过df2 <- apply(df, 1:2, function(x) if (x > 0) x else NA)
,但它在 A
时返回值或 B
是积极的。如何添加第二个条件?
最佳答案
您可以将每一列乘以一个向量,如果该行中的所有值都是正数,则该向量取值为 1,否则取值为 NA:
df * ifelse(rowSums(df <= 0) > 0, NA, 1)
# A B
# 1 NA NA
# 2 2 1
# 3 NA NA
关于如果任何值为非正数,则将行替换为 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45513469/