在 R 中使用日期,charToDate(x) 中的错误

Working with dates in R, Error in charToDate(x)

提问人:Jagoda Pokryszka 提问时间:11/2/2023 最后编辑:MaëlJagoda Pokryszka 更新时间:11/2/2023 访问量:27

问:

我使用润滑剂将数据框中的日期转换为标准格式“YYYY-MM-DD”:

df$diagnosis_year <- lubridate::ymd(df$diagnosis_year, truncated = 2L)

现在我想计算 df$diagnosis_year != NA 和另一个参数为“1”的行数。

我试过这个:

nrow(df[df$diagnosis_year != 'NA' & df$smoker_status == '1', ]) 

但总是收到错误消息:

***Error in charToDate(x) : 
  Zeichenkette ist nicht in einem eindeutigen Standardformat***

我将非常感谢您的帮助!!

我要重现的数据框:

df = data.frame (diagnosis_year  = c("1999", "2005", "1998", "2022", "2001"),
                  smoker_status = c("1", "0", "1", "1", "99"), sex = c("2", "2", "1", "2", "1")
                  )
R 日期 润滑剂

评论


答:

1赞 Maël 11/2/2023 #1

当您想检查是否缺少元素时,不要使用 ,而是使用内置函数:== NAis.na

nrow(df[is.na(df$diagnosis_year) & df$smoker_status == '1', ]) 
#[1] 0

要理解您的错误,请注意,首先在 R 中注明缺失值,而不是 ,即 不是字符串(字符),而是特殊运算符(检查)。通过将日期与字符串进行比较,您将强制将要转换为日期的字符串转换为日期,以便进行比较;但这当然是行不通的,因此是错误的。NA'NA'NA?NA!=!='NA'