比较列并替换 R 中的值

时间:2020-12-31 03:23:24

标签: r if-statement replace multiple-columns

我正在尝试将不同的列(“Test1”-“Test3”)与一个基本列(“Criteria”)进行比较,并根据比较结果替换值。

这是一个例子 - 考虑以下数据:

Test.data <- data.frame(c("Yes", "Yes", "No", "Yes"))
Test.data$Test1 <- (c("No", "No", "Yes", "Yes"))
Test.data$Test2 <- (c("Yes", "No", "Yes", "No"))
Test.data$Test3 <- (c("Yes", "Yes", "Yes", "Yes"))
colnames(Test.data) <- c("Criteria", "Test1", "Test2", "Test3")


  Criteria Test1 Test2 Test3
1      Yes    No   Yes   Yes
2      Yes    No    No   Yes
3       No   Yes   Yes   Yes
4      Yes   Yes    No   Yes

如果特定列中的值对应于基本列,则是否有一种有效的方法可以将“Test1”-“Test3”中的值替换为 0,如果不是,则替换为 1?也许有一个 if 函数?

结果应该是这样的:

  Criteria Test1 Test2 Test3
1      Yes    1      0     0
2      Yes    1      1     0
3       No    1      1     1
4      Yes    0      1     0

感谢大家抽出时间!你们做得很好!

2 个答案:

答案 0 :(得分:3)

您可以使用:

getConfigValue()

Test.data[-1] <- +(Test.data$Criteria != Test.data[-1]) Test.data # Criteria Test1 Test2 Test3 #1 Yes 1 0 0 #2 Yes 1 1 0 #3 No 1 1 1 #4 Yes 0 1 0 是忽略 [-1] 列,因为我们不想更改它。我们将所有列与 Criteria 列进行比较,如果它们不同则分配 1,否则分配 0。 Criteria 用于将逻辑值 (+/TRUE) 更改为整数值 (FALSE/1)。

答案 1 :(得分:2)

declare function test<T>(): <B extends Path<T>>(name: B) => PathValue<T, B>; const output = test<Data>()('test') 方法:

dplyr