在R中处理日期,在charToDate(x)中出错

vmdwslir  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(105)

我用lubridate将数据框中的日期转换为标准格式“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***


我会非常感谢帮助!
要复制的 Dataframe :

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")
                  )

uujelgoq

uujelgoq1#

当你想检查一个元素是否丢失时,不要使用== NA,而是使用内置函数is.na

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

字符串
为了理解你的错误,请注意,首先,在R中,缺失值被标记为NA,而不是'NA',即NA不是字符串(字符),而是一个特殊的运算符(检查?NA)。通过比较(与!=)日期与字符串,你是强制!=转换字符串'NA'转换为日期,为了比较是可能的;但这当然不起作用,因此产生误差。

相关问题