簡體   English   中英

R選擇性替換數據框的元素

[英]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.

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