我正在尝试在数据帧 df1
中添加一个新列 result
,作为特定列(value1
和 value2
列)满足以下条件:
按行方向均为正数、负数或 0,或者其中一个为 0 并且 另一个是负数或正数,则
result=="True"
;如果逐行其中一个为正,另一个为负,反之亦然,则
结果==“假”
;如果按行方向它们都是
NA
或其中之一是NA
但 另一个是负数或正数,则result=="-"
输入:
df1 <- data.frame(ID= c("ID1","ID2","ID3","ID4","ID5"), value1 = c(1.2, -1, NA, -1.5, 0), value2 = c(0.8, -1.1, -1, 1.3, 0.9))
预期输出:
df2 <- data.frame(ID= c("ID1","ID2","ID3","ID4","ID5"), value1 = c(1.2, -1, NA, -1.5, 0), value2 = c(0.8, -1.1, -1, 1.3, 0.9), result = c("True","True","-", "False", 'True'))
输出:
如有任何帮助,我们将不胜感激。
引用链接:
最佳答案
你可以试试
library(dplyr)
df1 %>%
mutate(result = case_when(
is.na(value1 * value2) ~ "-",
value1 * value2 >=0 ~ "True",
T ~ "False"
))
ID value1 value2 result
1 ID1 1.2 0.8 True
2 ID2 -1.0 -1.1 True
3 ID3 NA -1.0 -
4 ID4 -1.5 1.3 False
5 ID5 0.0 0.9 True
关于r - 基于两列的正负一致性突变新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70358255/