簡體   English   中英

比較列並替換 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 ) 更改為 integer 值 ( 1 / 0 )。

dplyr方法:

library(dplyr)

Test.data %>% mutate(across(-Criteria, ~as.numeric(. != Criteria)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM