使用 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 <- as.Date(df$SampleDate, format = '%m/%d/%Y')
或日期时间类,例如df$SampleDateTime <- as.POSIXct(paste(df$SampleDate, df$SampleTime), format = '%m/%d/%Y %H:%M:%S')
df$col
甚至没有出现在您提供的数据中。 paste '0'
不是有效的 R 语法。以及@alistaire 所说的。投票结束,因为不清楚。
【参考方案1】:
如果您尝试仅将前导零的日期输出到新列,则可以使用strftime
和as.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 语句来操作日期的主要内容,如果未能解决你的问题,请参考以下文章