从整个列的因子中提取小时

时间:2014-11-04 00:20:58

标签: r

我有一个数据框,其中时间是因子类,一小时是空白。

我想从每个时间列中删除小时并将其放入小时列

 time<- factor(c("13:30:00.994","19:15:20.300"))
 time
 hour<-c(0,0)
 hour
 data<- as.data.frame(cbind(hour, as.character(time)))
 data
 data$hour<-strsplit(as.character(time),":")[[1]][1]
 data

  data
   hour           V2
 1   13 13:30:00.994
 2   13 19:15:20.300

但是看看小时栏13 13 vs 13 19

输出应该剥掉19,所以看起来应该是这样的:

 data
   hour           V2
 1   13 13:30:00.994
 2   19 19:15:20.300

2 个答案:

答案 0 :(得分:0)

hour是否始终是数据框的前两个字符?如果是这样,可能更容易使用substr()

df <- data.frame(time = as.factor(c("13:30:00.994","19:15:20.300")))
transform(df, hour = substr(time, 1, 2))
#           time hour
# 1 13:30:00.994   13
# 2 19:15:20.300   19

答案 1 :(得分:0)

尝试:

> data$hour = sapply(strsplit(as.character(data$V2),':'), function(x) x[1])
> data
  hour           V2
1   13 13:30:00.994
2   19 19:15:20.300