[英](dplyr) Error when using mutate(), case_when() and which()
[英]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.