2015-12-19 35 views
0

我有兩列代表時間,一小時一分鐘。該數據幀類似於這樣:以適當的格式將兩列粘貼在一起R

hr mn 
0  0 
0  30 
1  0 
1  30 
2  0 
2  30 

我需要的是一種方法來粘貼這些合力得到一列hrmn這就是:

hrmn 
0 
30 
100 
130 
200 
230 

我認爲可以這樣做使用paste0一些方式,但這給了我:

hrmn <- as.numeric(paste0(hr,mn)) 

hrmn 
0 
30 
10 
130 
20 
230 

有沒有辦法將這兩列粘貼在一起,並得到我需要的格式?

回答

2
df$hrmn <- df$hr*100 + df$mn 

您需要查看類列hrmn中。使用class(df$hr)class(df$mn)。如果它們是數字,則使用:

df$hrmn <- df$hr*100 + df$mn 

如果它們是字符。使用:

df$hrmn <- as.numeric(df$hr*100) + as.numeric(df$mn) 
+0

這比我想象的要容易得多。謝謝! – user2113499

1

據我所知,你想得到一個小時/分鐘的格式。你可以做到這一點與:

mydf$hrmn <- paste0(sprintf("%02.0f", mydf$hr),":",sprintf("%02.0f", mydf$mn)) 

這給:

> mydf 
    hr mn hrmn 
1 0 0 00:00 
2 0 30 00:30 
3 1 0 01:00 
4 1 30 01:30 
5 2 0 02:00 
6 2 30 02:30 
0

我們也可以使用strptimepaste之後荷蘭國際集團的列,更改format,並轉換爲numeric

as.numeric(format(strptime(do.call(paste, df1), format='%H %M'), '%H%M')) 
#[1] 0 30 100 130 200 230