我有一个包含几个数字变量的数据框。我编写了一个排序算法,通过比较包含我感兴趣的数值的列中的值来对行进行排序。
这些值是数字格式的 YYYYMMDD。但是,某些条目具有 0(零)作为它真正应该是 NA 的值。这意味着可以在例如 20001224 和 0 之间进行比较,即使它没有意义,因为 0 是不适用的值。
我可以使用 strptime 将值转换为日期,从而摆脱非日期。但是,为了了解如何将数据帧的几列重新编码为 NA 值,我想将其作为问题发布在这里。
必须有一种简单的方法(使用其中一个应用函数)逐列将所有 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
这是我的数据摘录的 dput:
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")