这可能被问了很多次,但我找不到相关资源,只是无法正确处理。我有一个带有格式HourStamp
列的数据框,yyyymmddHH
我需要从中提取HH
。我该怎么做?
举个例子:
HourStamp Hour
2013050100 00
2013050101 01
2013050102 02
...
我需要Hour
添加该列。谢谢!
这可能被问了很多次,但我找不到相关资源,只是无法正确处理。我有一个带有格式HourStamp
列的数据框,yyyymmddHH
我需要从中提取HH
。我该怎么做?
举个例子:
HourStamp Hour
2013050100 00
2013050101 01
2013050102 02
...
我需要Hour
添加该列。谢谢!
就像@Klaus 已经评论过的那样,在这种情况下,一个简单的 substr 就可以解决问题,即substr('2013050100', 9, 10)
. 请记住,这substr
是矢量化的,因此您可以简单地执行以下操作:
df$Hour = substr(df$HourStamp, 9, 10)
处理日期/时间的更灵活和强大的方法是简单地转换HourStamp
为真正的 R 日期对象:
d = strptime('2013050100', format = '%Y%m%d%H')
strftime(d, '%H')
[1] "00"
在这种情况下,strptime
解决方案有点麻烦,但它允许使用以下内容:
> strftime(d, '%A %d of %B in the year %Y')
[1] "Wednesday 01 of May in the year 2013"
或者:
strftime(d, 'file%Y%d.csv')
[1] "file201301.csv"
或以您的示例的矢量化形式:
df$time = strptime(df$HourStamp, format = '%Y%m%d%H')
df$Hour = strftime(df$time, '%H')