R 将一个数转换成负数

R 将一个数转换成负数,r,R,在这样的数据中: data.frame (com = c("col1","em"), stock1 = c(2.6, 0), aim = c(0,3.10)) 如何才能将减号添加到具有com“em”的行的所有行中 预期结果示例: data.frame (com = c("col1","em"), stock1 = c(2.6, 0), aim = c(0,-3.10)) com stock1 aim 1 col1 2.6 0.0 2 em 0.0 -3.1 这是怎么

在这样的数据中:

data.frame (com = c("col1","em"), stock1 = c(2.6, 0), aim = c(0,3.10))
如何才能将减号添加到具有com“em”的行的所有行中

预期结果示例:

data.frame (com = c("col1","em"), stock1 = c(2.6, 0), aim = c(0,-3.10))
   com stock1  aim
1 col1    2.6  0.0
2   em    0.0 -3.1
这是怎么回事

xy <- data.frame (com = c("col1","em"), stock1 = c(2.6, 0), aim = c(0,3.10))

find.com <- -which(names(xy) == "com")
xy[xy$com == "em", find.com] <- -xy[xy$com == "em", find.com]
xy

   com stock1  aim
1 col1    2.6  0.0
2   em    0.0 -3.1

xy使用
ifelse

df1 <- data.frame (com = c("col1","em"), stock1 = c(2.6, 0), aim = c(0,3.10))

df1$aim <- ifelse(df1$com == "em", -df1$aim, df1$aim)

df1
   com stock1  aim
1 col1    2.6  0.0
2   em    0.0 -3.1

df1如果
stock1
列中的值>0怎么办?而且可能有更多的数字列,而不仅仅是两个(但我显然只是在这里猜测)。如果一行中的'em'已经有了一个负号,那就不必理会了吗?@RuiBarradas你当然是对的。此解决方案假设所有数字都为正,但情况可能并非如此。