【问题标题】:using if else statements to manipulate dates [duplicate]使用 if else 语句来操作日期
【发布时间】:2016-07-03 00:35:30
【问题描述】:

我正在尝试做一个 if else 语句来说明如果值小于 10,则在前面添加一个零,如果不是则保持原样。我试图让我所有的日期都是 2 位数。请协助。

if(df$col < 10){
paste '0'
else df$col
}

我试图将其分解为不同的列

EventID SampleDate SampleTime
130466  3/19/2008   12:30:00
131392  4/30/2008   08:45:00
131658  5/14/2008   10:00:00
117770  6/11/2008   08:45:00
118680  7/23/2008   09:15:00
118903   8/6/2008   09:00:00

SampleDatech year month day2
3/19/2008 2008     3   19
4/30/2008 2008     4   30
5/14/2008 2008     5   14
6/11/2008 2008     6   11
7/23/2008 2008     7   23
 8/6/2008 2008     8    6

【问题讨论】:

  • 你能给我们展示样本数据吗?有日期格式化程序可能是执行此操作的更好方法。
  • 所以你用前导0填充? stackoverflow.com/questions/14409084/…
  • 不知道df$col 是什么,但请注意if 不是矢量化的,ifelse 会去除属性(如日期)。但是,对于这里的内容,您应该将它们转换为日期类,例如df$SampleDate &lt;- as.Date(df$SampleDate, format = '%m/%d/%Y') 或日期时间类,例如df$SampleDateTime &lt;- as.POSIXct(paste(df$SampleDate, df$SampleTime), format = '%m/%d/%Y %H:%M:%S')
  • df$col 甚至没有出现在您提供的数据中。 paste '0' 不是有效的 R 语法。以及@alistaire 所说的。投票结束,因为不清楚。

标签: r date-formatting


【解决方案1】:

如果您尝试仅将前导零的日期输出到新列,则可以使用strftimeas.Date 的组合。

df$day = strftime(as.Date(df$SampleDate, "%m/%d/%Y"), "%d")

或者,如果您想保留整个日期,但将前导零添加到您可以执行此操作的日期。

df$NewDate = strftime(as.Date(df$SampleDate, "%m/%d/%y"), "%m/%d/%Y")

【讨论】:

    猜你喜欢
    • 2021-01-27
    • 2012-09-19
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多