我用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")
)
型
1条答案
按热度按时间uujelgoq1#
当你想检查一个元素是否丢失时,不要使用
== NA
,而是使用内置函数is.na
:字符串
为了理解你的错误,请注意,首先,在R中,缺失值被标记为
NA
,而不是'NA'
,即NA
不是字符串(字符),而是一个特殊的运算符(检查?NA
)。通过比较(与!=
)日期与字符串,你是强制!=
转换字符串'NA'
转换为日期,为了比较是可能的;但这当然不起作用,因此产生误差。