R - 将负号从一列复制到另一列

R - Copy negative sign from one to another column

我有一个数据框 (df_ann),如下所示:

Cha Seg_value Seg_value2
AXL2 -0.654 2.965
PTT1 1.957 1.84
AXL2 2.654 0.989
PTT1 -1.038 0.85

如果 Seg_value 列中存在负号,我想在 Seg_value2 列中添加负号。

输出应该是:

Cha Seg_value Seg_value2
AXL2 -0.654 -2.965
PTT1 1.957 1.84
AXL2 2.654 0.989
PTT1 -1.038 -0.85

我已经搜索了问题的解决方案,但没有找到答案。任何事情都会有所帮助。

提前致谢!

我们可以乘以 'Seg_value'

sign
df_ann$Seg_value2 <- with(df_ann, sign(Seg_value) * Seg_value2)

-输出

df_ann
   Cha Seg_value Seg_value2
1 AXL2    -0.654     -2.965
2 PTT1     1.957      1.840
3 AXL2     2.654      0.989
4 PTT1    -1.038     -0.850

数据

df_ann <- structure(list(Cha = c("AXL2", "PTT1", "AXL2", "PTT1"), Seg_value = c(-0.654, 
1.957, 2.654, -1.038), Seg_value2 = c(2.965, 1.84, 0.989, 0.85
)), class = "data.frame", row.names = c(NA, -4L))

另一个基础 R 选项(但如果 0Seg_value 中则不适用)

transform(
  df,
  Seg_value2 = Seg_value2 * Seg_value / abs(Seg_value)
)