2014-11-04 2 views
1

У меня есть кадр данных со временем, который находится в классе факторов, и час, который пуст.Извлечение часа из коэффициента для всей колонки

Я хочу, чтобы лишить час от каждой колонки времени и поместить его в час колонке

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 против 13 19

из положить должно обирать 19, так он должен выглядеть следующим образом:

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

взгляд на ЧАС колонн 13 13 против 13 19 – user3022875

+0

Причина они оба '13' ваши' strsplit' возвращается список, и вы явно ссылаетесь на первую подстроку первого члена списка. '19' находится в' list [[2]] [1] '. – vpipkt

ответ

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 
+0

Я только что разместил это точное решение. – vpipkt

0

Try:

> 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 
Смежные вопросы