【发布时间】:2021-10-20 10:31:57
【问题描述】:
在 R 数据框中,我想将数值变量更改为相反的数字(乘 -1),其中类别等于“a”或“b”。 目前,代码有点长,还有其他方法吗?谢谢!
test_data <- data.frame(category=c("a","b","x","a","b","c","d"),
amount_local=c(10,30,52,5,67,5,20),
amount_usd=c(1,3,5,7,8,3,4))
test_data$amount_local[test_data$category %in% c('a','b') ] <- test_data$amount_local[test_data$category %in% c('a','b') ]*-1
test_data$amount_usd[test_data$category %in% c('a','b') ] <- test_data$amount_usd[test_data$category %in% c('a','b') ]*-1
附加问题:我已经收到了一些对原始问题有用的方法。另外,当我们有两个条件变量作为打击时,“更新代码”无法工作。 @Ronak Shah,你能帮忙吗?谢谢!
test_data_new <- data.frame(
category=c("a","b","x","a","b","c","d"), sub_category=c("a","b","x","a","b","c","d"), amount_local=c(10,30,52,5,67,5,20),
amount_usd=c(1,3,5,7,8,3,4))
-----'更新代码'的开始
ind_new <- test_data_new $category %in% c('a','b') & test_data_new $csub_ategory %in% c('a')
test_data_new [ind,c(-1,-2)] <- test_data_new [ind, c(-1,-2)] * -1
-----'更新代码'结束
【问题讨论】:
-
您的附加问题中有一些拼写错误。 1. 数据框名和列名之间不能有空格。所以不是
test_data_new $category,而是test_data_new$category。 2.您使用的是csub_ategory,但您的列名是sub_category。 3. 你应该使用ind_new而不是ind。 -
感谢您的重播!