基于两列的正负一致性突变一个新列
Posted
技术标签:
【中文标题】基于两列的正负一致性突变一个新列【英文标题】:Mutate a new columns based positive and negative consistency of two columns 【发布时间】:2022-01-18 07:38:28 【问题描述】:我正在尝试在我的数据框 df1
中添加一个新列 result
,因为特定列(value1
和 value2
列)满足以下条件:
它们在行上都是正数、负数或 0,或者其中一个是 0 并且
另一个要么消极要么积极,然后result=="True"
;
如果按行排列,其中一个是正数,另一个是负数,反之亦然,那么
result=="False"
;
如果按行来说它们都是NA
s 或者其中一个是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'))
输出:
任何帮助将不胜感激。
参考链接:
Add a new column if multiple columns have negative value
【问题讨论】:
【参考方案1】:你可以试试
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
【讨论】:
非常聪明的解决方案,使用乘法,非常感谢。以上是关于基于两列的正负一致性突变一个新列的主要内容,如果未能解决你的问题,请参考以下文章
比较两列:如果匹配,则在新列中打印值,如果不匹配,则将第二列的值打印到新列
Pandas Dataframe to pivot table - 根据前两列的添加创建新列
DIV+CSS布局,怎么实现两列高度会一致,其中左例随内容长度而定。