比较列并替换 R 中的值
Compare Columns and replace Values in R
我正在尝试将不同的列(“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
感谢大家抽出时间!你们做得很好!
您可以使用:
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
列,因为我们不想更改它。我们将所有列与 Criteria
列进行比较,如果它们不同则分配 1,否则分配 0。 +
用于将逻辑值(TRUE
/FALSE
)更改为整数值(1
/0
)。
一个dplyr
方法:
library(dplyr)
Test.data %>% mutate(across(-Criteria, ~as.numeric(. != Criteria)))
我正在尝试将不同的列(“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
感谢大家抽出时间!你们做得很好!
您可以使用:
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
列,因为我们不想更改它。我们将所有列与 Criteria
列进行比较,如果它们不同则分配 1,否则分配 0。 +
用于将逻辑值(TRUE
/FALSE
)更改为整数值(1
/0
)。
一个dplyr
方法:
library(dplyr)
Test.data %>% mutate(across(-Criteria, ~as.numeric(. != Criteria)))