【发布时间】:2019-12-07 23:10:22
【问题描述】:
我有一个数据框,其中有一列日期,我想创建一个新列来重新定义日期。
我正在使用一个函数来执行此操作,但我在定义我的日期时遇到了问题。
我的函数必须将我的数据分为 4 类:是、否、NA 或无效
may <- function(x) {
mayfunc <- function (x) {
# Classifies date as argument into categories {yes or no} or NA or invalid
if (is.na(x)) {
classification <- NA
} else if ( x < "2017-05-15" ) {
classification <- "yes"
} else if ( "2017-05-15" <= x ) {
classification <- "no"
} else {
classification <- "invalid"
}
classification
}
sapply (x, mayfunc)
}
我看不懂的结果
may("lalala")
may(2016-04-13)
may("2016-04-13")
may(2019-01-01)
may("2019-01-01")
may(300)
may(NA)
output:
lalala
"no" --> why not invalid?
[1] "yes" --> correct
2016-04-13
"yes" --> correct
[1] "yes" --> should be "no"
2019-01-01
"no" --> correct
[1] "no" --> why not invalid?
[1] NA
我做错了什么?
【问题讨论】:
-
您的日期在函数中被读取为字符串。
-
尝试将
as.Date包裹在您的字符串日期周围,仅供参考,我认为在这里使用ifelse()可能更合适 -
没问题,如果下面的答案也对您有所帮助,请告诉我