【发布时间】:2021-09-21 15:55:08
【问题描述】:
我在 R 中有一个数据框,其中包含多个列,我想根据特定列的值对其进行操作。这是一个以相同方式设置的示例数据框:
dat <- data.frame(A=c("L","Right","R","Left"), B=c(2,5,7,-8), C=c(-3,6,-4,9))
dat
如果 A 列中的值是“L”或“Left”,我想将该行中的其他列转换为负值除非该值已经是负数。例如,在第一行中,我希望 2 变为负 2,但保持 -3 不变。在第四行,我希望 -8 保持不变,但希望将 9 更改为 -9。
我之前使用此代码转换为负值,但这是我最初只使用正值并且不想让某些值保持不变的时候。
library(dplyr)
dat <- dat %>% mutate(across(where(is.numeric), ~ if_else(grepl("^L", A), -1, 1) * .))
我不确定如何更改上述代码来解决这个新问题,如果有人能帮助回答这个问题,我将不胜感激。非常感谢!
【问题讨论】:
标签: r dataframe dplyr negative-number