[英]R Selectively replacing elements of a dataframe
我在變量名稱的數據框中有這樣的列:
tb <- tibble(Variable = c("var1", "var2", "var3"))
我也有一個新名稱的命名向量,我想將列中的某些單元格替換為:
new_names <- c(var1 = "VariableOne")
我根據谷歌搜索嘗試了此操作:
tb %>% mutate(Variable = new_names[Variable])
# A tibble: 3 x 1
Variable
<chr>
1 VariableOne
2 NA
3 NA
它幾乎可以工作,但是如果它們不在我的new_names向量中,我不希望R將其替換為NA。 在這種情況下,我想保留原始名稱。 我該怎么做呢?
library(dplyr)
tb <- tibble(Variable = c("var1", "var2", "var3"))
tb %>% mutate(Variable = replace(Variable, Variable == "var1", "VariableOne"))
在不更改OP方法的情況下,可以選擇coalesce
“變量”以將NA
元素替換為原始“變量”值
tb %>%
mutate(Variable =coalesce(new_names[Variable], Variable))
# A tibble: 3 x 1
# Variable
# <chr>
#1 VariableOne
#2 var2
#3 var3
或另一個選擇是case_when
tb %>%
mutate(Variable = case_when(Variable %in% names(new_names) ~
new_names[Variable], TRUE ~ Variable))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.