R 返回数字而不是日期的ifelse语句

R 返回数字而不是日期的ifelse语句,r,R,我的代码中有一系列日期,它们位于ifelse语句中,返回的是单个数值,而不是日期 osa <- read.delim("C:/RMathew/RScripts/osaevents/osaevents.txt", stringsAsFactors=TRUE) # osa$datetime <- ymd_hms(osa$datetime) osa$date <- as.Date(osa$datetime) sixoclock <- 6*60*60 osa$daystart &

我的代码中有一系列日期,它们位于ifelse语句中,返回的是单个数值,而不是日期

osa <- read.delim("C:/RMathew/RScripts/osaevents/osaevents.txt", stringsAsFactors=TRUE)
#
osa$datetime <- ymd_hms(osa$datetime)
osa$date <- as.Date(osa$datetime)
sixoclock <- 6*60*60
osa$daystart <- ymd_hms(ymd(osa$date) + sixoclock)
osa$dateplus <- osa$date + 1
osa$dateminus <- osa$date - 1
osa$dayend <- ymd_hms(ymd(osa$dateplus) + sixoclock)
osa$dateloca <- osa$datetime >= osa$daystart
osa$datelocb <- osa$datetime < osa$dayend
osa$milldate <- ifelse(osa$dateloca==TRUE & osa$datelocb==TRUE,
                       osa$date,osa$dateminus)

想法?此外,可能还有一种更优雅的方法来实现这一点。

请参阅帮助文件以了解
ifelse

警告:

结果的模式可能取决于“测试”的值(参见 示例),以及结果的class属性(请参见“oldClass”) 取自“测试”,可能不适用于该值 从“是”和“否”中选择

有时最好使用一个结构,例如


(tmp请参阅帮助文件以了解
ifelse

警告:

结果的模式可能取决于“测试”的值(参见 示例),以及结果的class属性(请参见“oldClass”) 取自“测试”,可能不适用于该值 从“是”和“否”中选择

有时最好使用一个结构,例如


(tmp请参阅帮助文件以了解
ifelse

警告:

结果的模式可能取决于“测试”的值(参见 示例),以及结果的class属性(请参见“oldClass”) 取自“测试”,可能不适用于该值 从“是”和“否”中选择

有时最好使用一个结构,例如


(tmp请参阅帮助文件以了解
ifelse

警告:

结果的模式可能取决于“测试”的值(参见 示例),以及结果的class属性(请参见“oldClass”) 取自“测试”,可能不适用于该值 从“是”和“否”中选择

有时最好使用一个结构,例如


(tmpA.Webb使我走上了正确的道路。ifelse类正在剥离日期格式的答案。由于某种原因,上面带有索引的解决方案似乎混淆了日期顺序。正如A.Webb在帮助文件中指出的,下面一行立即修复了它


class(osa$milldate)A.Webb让我走上了正确的道路。ifelse类正在剥离日期格式的答案。由于某种原因,上面带有索引的解决方案似乎混淆了日期顺序。正如A.Webb在帮助文件中指出的,下面一行立即修复了它


class(osa$milldate)A.Webb让我走上了正确的道路。ifelse类正在剥离日期格式的答案。由于某种原因,上面带有索引的解决方案似乎混淆了日期顺序。正如A.Webb在帮助文件中指出的,下面一行立即修复了它


class(osa$milldate)A.Webb让我走上了正确的道路。ifelse类正在剥离日期格式的答案。由于某种原因,上面带有索引的解决方案似乎混淆了日期顺序。正如A.Webb在帮助文件中指出的,下面一行立即修复了它



class(osa$milldate)我就是这样一个笨蛋。我甚至不能理解这个结构。如果你能抽出时间,请你把它翻译成一个更简单的形式,以便我能理解它。我知道ifelse正在剥离日期格式。我想不出如何重写这个ifelse语句。这就是我正在努力解决的问题。你的例子h正如翻译成多步骤方法一样。我不会费心重写
ifelse
语句。只需在它后面添加另一行。
osa$milldate Benjamin,你的评论将一切都变成1969年的最后一天。我已经加载了lubridate包。让我试试A.Webb的方法。我马上回来。来自帮助的建议文件是通用的。在其他情况下,你可能会遇到不止一个类。我是这样一个笨蛋。我甚至不能理解这种结构。如果你能抽出时间,请你把它翻译成一个更简单的形式,以便我能理解它。我知道ifelse正在剥离日期格式。我想不出如何重写写下这个ifelse语句。这就是我正在努力解决的问题。你的例子已经转化为多步骤方法。我不会费心重写
ifelse
语句。只需在它后面再加一行。
osa$milldate Benjamin,你的评论将一切都变成了1969年的最后一天。我已经加载了lubridate包。Le让我试试A.韦伯的方法。我马上回来。帮助文件中的建议是一般性的。在其他情况下,你可能会遇到不止一个类。我是这样一个笨蛋。我甚至无法理解这种结构。如果你能抽出时间,请你把它翻译成更简单的形式,以便我能理解它。我理解ifelse正在剥离日期格式。我想不出如何重写这个ifelse语句。这正是我正在努力解决的问题。您的示例已被转换为多步骤方法。我不会费心重写
ifelse
语句。只需在它之后再添加一行即可。
osa$milldate Benjamin,您的评论越来越多事情一直持续到1969年的最后一天。我已经加载了lubridate软件包。让我试试A.Webb的方法。我马上回来。帮助文件中的建议是一般性的。在其他情况下,你可能会遇到不止一个类。我是这样一个笨蛋。我甚至无法理解这种结构。如果你能抽出时间,请你翻译一下好吗我知道ifelse正在剥离日期格式。我想不出如何重写这个ifelse语句。这就是我正在努力解决的问题。您的示例已被转换为多步骤方法。我不会费心重写
ifelse
语句。
'data.frame':   897 obs. of  16 variables:
 $ datetime : POSIXct, format: "2015-08-13 15:11:53" "2015-08-13 14:53:26" "2015-08-13 14:34:58" "2015-08-13 14:16:18" ...
 $ stream   : Factor w/ 1 level "fc": 1 1 1 1 1 1 1 1 1 1 ...
 $ fe       : num  18.1 18 17.6 18.1 18.5 ...
 $ ni       : num  2.97 2.99 2.92 3.2 3.32 ...
 $ cu       : num  3.41 3.35 2.99 3.58 3.73 ...
 $ pd       : num  138 157 139 166 183 ...
 $ mg       : num  13.8 13.8 14.4 14.3 13.9 ...
 $ so       : num  9.67 9.81 9.65 10.58 11.37 ...
 $ date     : Date, format: "2015-08-13" "2015-08-13" "2015-08-13" "2015-08-13" ...
 $ daystart : POSIXct, format: "2015-08-13 06:00:00" "2015-08-13 06:00:00" "2015-08-13 06:00:00" "2015-08-13 06:00:00" ...
 $ dateplus : Date, format: "2015-08-14" "2015-08-14" "2015-08-14" "2015-08-14" ...
 $ dateminus: Date, format: "2015-08-12" "2015-08-12" "2015-08-12" "2015-08-12" ...
 $ dayend   : POSIXct, format: "2015-08-14 06:00:00" "2015-08-14 06:00:00" "2015-08-14 06:00:00" "2015-08-14 06:00:00" ...
 $ dateloca : logi  TRUE TRUE TRUE TRUE TRUE TRUE ...
 $ datelocb : logi  TRUE TRUE TRUE TRUE TRUE TRUE ...
 $ milldate : num  16660 16660 16660 16660 16660 ...
  (tmp <- yes; tmp[!test] <- no[!test]; tmp)
osa$milldate <- osa$date
ind<- osa$dateloca==TRUE & osa$datelocb==TRUE
osa$milldate[!ind] <- osa$dateminus