R 从“中提取小时”;yyyymmddHH“;

R 从“中提取小时”;yyyymmddHH“;,r,R,这可能会被问很多次,但我找不到相关的资源,就是找不对。我有一个数据帧,在yyyymmddHH格式中有一个HourStamp列,我需要从中提取HH。我怎么做 例如: HourStamp Hour 2013050100 00 2013050101 01 2013050102 02 ... 我需要添加Hour列。谢谢 就像@Klaus已经评论过的那样,在这种情况下,一个简单的substr将起到关键作用,即substr('201305100',9,10)。请记住,substr是矢量化的,

这可能会被问很多次,但我找不到相关的资源,就是找不对。我有一个数据帧,在
yyyymmddHH
格式中有一个
HourStamp
列,我需要从中提取
HH
。我怎么做

例如:

HourStamp  Hour
2013050100   00
2013050101   01
2013050102   02
...

我需要添加
Hour
列。谢谢

就像@Klaus已经评论过的那样,在这种情况下,一个简单的substr将起到关键作用,即
substr('201305100',9,10)
。请记住,
substr
是矢量化的,因此您可以简单地执行以下操作:

df$Hour = substr(df$HourStamp, 9, 10)
处理日期/时间的一种更灵活、更强大的方法是将
HourStamp
简单地转换为一个真实的R date对象:

d = strptime('2013050100', format = '%Y%m%d%H')
strftime(d, '%H')
[1] "00"
在这种情况下,
strtime
解决方案有点麻烦,但它允许以下内容:

> strftime(d, '%A %d of %B in the year %Y')
[1] "Wednesday 01 of May in the year 2013"
或:

或以矢量化形式(例如:

df$time = strptime(df$HourStamp, format = '%Y%m%d%H')
df$Hour = strftime(df$time, '%H')

这不是一个简单的子字符串操作吗?比如
substr(hourstamp,9,10)
@KlausByskovPedersen,这是正确的。我想把
as.POSIXct
+
format
东西。或者使用日期:
格式(as.POSIXct(as.character(HourStamp),格式='%Y%m%d%H'),'%H')
@Justin这可能是我要找的更多内容。谢谢
df$time = strptime(df$HourStamp, format = '%Y%m%d%H')
df$Hour = strftime(df$time, '%H')