tidyr replace NA在日期向量上似乎不起作用

时间:2019-10-23 18:29:26

标签: r date replace tidyr na

library(tidyr)
df <- tibble(col1 = as.Date(c(NA, "2019-01-01")))
#> # A tibble: 2 x 1
#>   col1      
#>   <date>    
#> 1 NA        
#> 2 2019-01-01

我正在处理上面的小标题。我想将NA替换为字符串Not Applicable。但这是行不通的。为什么?我该怎么办?

df %>% replace_na(list(col1 = "Not Applicable"))
#> Error in charToDate(x) : 
#>   character string is not in a standard unambiguous format

1 个答案:

答案 0 :(得分:1)

"Not applicable"character,我们正在尝试用NA来更改Date类中的character。无法执行某些操作,因为这些操作将成为不同的类输出。相反,请事先更改class,然后执行replace_na

library(dplyr)
df %>%
   mutate(col1 = as.character(col1)) %>% 
   replace_na(list(col1 = "Not Applicable"))
# A tibble: 2 x 1
#  col1          
#  <chr>         
#1 Not Applicable
#2 2019-01-01

或将其放置在可以容纳多种类型的结构中,例如list

library(purrr)
df %>% 
   mutate(col1 = map(col1, ~ if(is.na(.x)) "Not Applicable" else .x))