有选择性替换功能吗?应该使用 If 语句还是 For 循环来完成?
Is there a selective replace function? Should it be done using a If statement or For loop?
我是 R 的新手。我需要更多有关查找和替换功能的帮助,但它更具选择性。
我使用的示例数据集可以通过以下方式导出:
name_1 <- c("Madeline","Maximillian","Maxon","Mad","Marvin")
value <- c(2.3,3.4,7.5,1.9,16.2)
scoreboard_table <- data.frame(name_1,value)
name_2 <- c("Madeline","Maximillian","Maxon","Mad")
nickname_1 <- c("Mad","Max","M","N/A")
nickname_2 <- c("Madine","Maxim","N/A","N/A")
nickname_table <- data.frame(name_2,nickname_1,nickname_2)
我想用第二个昵称替换记分牌的名称table。在那种情况下,它会导致 scoreboard_table 变成:
name_1 <- c("Madine","Maxim","Maxon","Mad","Marvin")
value <- c(2.3,3.4,7.5,1.9,16.2)
scoreboard_table <- data.frame(name_1,value)
我确定是做一个 for 循环会更容易,还是做一个 if, else 语句。我应该如何处理这件事?
提前感谢您的帮助。非常感谢。
您可以执行联接并使用 coalesce
从 nickname_2
获取名称。
library(dplyr)
left_join(scoreboard_table, nickname_table, by = c('name_1' = 'name_2')) %>%
transmute(name_1 = coalesce(nickname_2, name_1),
value) -> scoreboard_table
scoreboard_table
# name_1 value
#1 Madine 2.3
#2 Maxim 3.4
#3 Maxon 7.5
#4 Mad 1.9
#5 Marvin 16.2
如果他们还没有将数据中的 "N/A"
值更改为真实值 NA
。
nickname_table[nickname_table == 'N/A'] <- NA
我是 R 的新手。我需要更多有关查找和替换功能的帮助,但它更具选择性。
我使用的示例数据集可以通过以下方式导出:
name_1 <- c("Madeline","Maximillian","Maxon","Mad","Marvin")
value <- c(2.3,3.4,7.5,1.9,16.2)
scoreboard_table <- data.frame(name_1,value)
name_2 <- c("Madeline","Maximillian","Maxon","Mad")
nickname_1 <- c("Mad","Max","M","N/A")
nickname_2 <- c("Madine","Maxim","N/A","N/A")
nickname_table <- data.frame(name_2,nickname_1,nickname_2)
我想用第二个昵称替换记分牌的名称table。在那种情况下,它会导致 scoreboard_table 变成:
name_1 <- c("Madine","Maxim","Maxon","Mad","Marvin")
value <- c(2.3,3.4,7.5,1.9,16.2)
scoreboard_table <- data.frame(name_1,value)
我确定是做一个 for 循环会更容易,还是做一个 if, else 语句。我应该如何处理这件事?
提前感谢您的帮助。非常感谢。
您可以执行联接并使用 coalesce
从 nickname_2
获取名称。
library(dplyr)
left_join(scoreboard_table, nickname_table, by = c('name_1' = 'name_2')) %>%
transmute(name_1 = coalesce(nickname_2, name_1),
value) -> scoreboard_table
scoreboard_table
# name_1 value
#1 Madine 2.3
#2 Maxim 3.4
#3 Maxon 7.5
#4 Mad 1.9
#5 Marvin 16.2
如果他们还没有将数据中的 "N/A"
值更改为真实值 NA
。
nickname_table[nickname_table == 'N/A'] <- NA