我有一个包含几个数字变量的数据框。我编写了一个排序算法,通过比较包含我感兴趣的数值的列中的值来对行进行排序。
数值格式为YYYYMMDD。但是,有些条目有0(零)作为一个值,它应该是一个NA。这意味着可以在例如20001224和0之间进行比较,即使它没有意义,因为0是不适用的值。
我可以使用strptime将值转换为日期,从而摆脱非约会。但是,为了理解如何将数据帧的几列重新编码为NA值,我想在此处将其作为一个问题发布。
必须有一种简单的方法(使用其中一个应用函数)逐列,并将所有0(0)重新编码为NA。
EnrollmentBegin EnrollmentBegin2 EnrollmentBegin3 EnrollmentEnd EnrollmentEnd2 EnrollmentEnd3
20040129 20130107 0 20060526 20140816 0
20050829 0 0 20070822 0 0
20000831 0 0 20020524 0 0
20080827 0 0 20090526 0 0
以下是我的数据摘录的输入:
structure(list(EnrollmentBegin = c(20040129, 20050829, 20000831, 20080827), EnrollmentBegin2 = c(20130107, 0, 0, 0), EnrollmentBegin3 = c(0, 0, 0, 0), EnrollmentEnd = c(20060526, 20070822, 20020524, 20090526 ), EnrollmentEnd2 = c(20140816, 0, 0, 0), EnrollmentEnd3 = c(0, 0, 0, 0)), .Names = c("EnrollmentBegin", "EnrollmentBegin2", "EnrollmentBegin3", "EnrollmentEnd", "EnrollmentEnd2", "EnrollmentEnd3"), row.names = c("3", "5", "6", "7"), class = "data.frame")