r - 基于两列的正负一致性突变新列

标签 r dataframe dplyr tidyverse

我正在尝试在数据帧 df1 中添加一个新列 result,作为特定列(value1value2 列)满足以下条件:

  1. 按行方向均为正数、负数或 0,或者其中一个为 0 并且 另一个是负数或正数,则 result=="True";

  2. 如果逐行其中一个为正,另一个为负,反之亦然,则 结果==“假”;

  3. 如果按行方向它们都是 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'))

输出:

enter image description here

如有任何帮助,我们将不胜感激。

引用链接:

Add a new column if multiple columns have negative value

最佳答案

你可以试试

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/

相关文章:

r - 如何将大多数因素的数据框转换为数值矩阵;不公开不起作用

python - 根据列的唯一值分配增量值

python - 如何访问在数据框中保存为对象的分类数据?

r - 按 LIKE 合并两个表,但合并整个字符串而不是字符串的一部分

r - 如何自定义 ggplotly 对象中的悬停信息?

r - dplyr::if_else 更改日期时间 (POSIXct) 值

r - 识别 r 中的重复

R cummax函数与NA

r - 执行基因分型数据操作

r - 如何在 R 中创建具有所有可能性的汇总数据框