簡體   English   中英

使用 mutate 和 case_when 時出錯,charToDate(x) 中出錯

[英]Error when using mutate and case_when with Error in charToDate(x)

我正在嘗試使用 case when 和 mutate 來修改我數據庫中的現有列。 例子:

id: c(1,2,3,4,5,6,7,8,...)

類型: c('x', 'y', 'unknown') - 3 個級別

Date_of_regsitering (2011-06-03, NA, NA, 2017-05-02, NA, NA, 2012-05-02...)

只有一些觀察有這個日期。

Date_of_enrollment (NA, NA, 2015-04-03, NA, 2012-08-02, 2010-05-01...)

只有一些觀察有這個日期。

我想根據是否有“注冊日期”或“注冊日期”更改“類型”列中的任何“未知”,換句話說,只要日期列中有日期並且不是 NA然后將“類型”列中的“未知”之一更改為 x 或 y:

我在 R studio 中構建了以下代碼:

Df <- Df %>%
    mutate(Type = case_when(Type='unknown'& Date_of_registering !='NA'~'x',
                            Type='unknown'& Date_of_enrollment!='NA' ~ 'y',
                            TRUE ~ Type))

但我收到以下錯誤消息:

Error in charToDate(x) : 
  character string is not in a standard unambiguous format

出了什么問題?

這里有兩個主要問題,即評估應該使用兩個等號而不是一個等號,並且在確定列是否為 NA 時最好使用 is.na(x)。

下面的代碼應該可以解決問題。

id <- c(1,2,3,4,5,6,7,8)
Type <- c('x', 'y', 'unknown', 'x', 'y', 'unknown', 'x', 'unknown')
Date_of_registering <- as.Date(c("2011-06-03", NA, "2017-05-02", NA, NA, NA, "2012-05-02", NA))
Date_of_enrollment <- as.Date(c(NA, NA, "2015-04-03", NA, "2012-08-02", "2010-05-01", NA, NA))

Df <-
  data.frame(id, Type, Date_of_registering, Date_of_enrollment, stringsAsFactors = FALSE) %>%
  mutate(new_type = 
           case_when(Type == 'unknown' & !is.na(Date_of_registering) ~ 'x',
                     Type == 'unknown' & !is.na(Date_of_enrollment) ~ 'y',
                     TRUE ~ Type))

暫無
暫無

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

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