使用 if else 语句来操作日期

Posted

技术标签:

【中文标题】使用 if else 语句来操作日期【英文标题】:using if else statements to manipulate dates [duplicate] 【发布时间】: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填充? ***.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 所说的。投票结束,因为不清楚。 【参考方案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")

【讨论】:

以上是关于使用 if else 语句来操作日期的主要内容,如果未能解决你的问题,请参考以下文章

Shell if else语句(详解版)

关于C语言中if else的用法,高手来帮下忙

JavaScript If...Else 语句

流程控制语句

shell脚本中的if中多条件语句如何写。

为啥我不能使用正则表达式来评估 if...else 语句 [重复]