2016-07-29 54 views
0

我有一個data.frame,我在melt之後得到一個數組,這意味着在12 months[48,38,12]==[longitude, latitude, time]期間在一個區域上具有變量值的矩陣3維。所以,當我融化矩陣,我的數據會是這樣的:在融化陣列後在數據框中添加一列

 lon lat date value 
     1 1 1 1 18.00000 
     2 2 1 1 17.83333 
     3 3 1 1 18.83333 
     4 4 1 1 20.50000 

現在,我想在列日有價值觀爲Date,我的意思是"1986-01-01" "1986-02-01" "1986-03-01" "1986-04-01" ..是有可能嗎?有沒有一個簡單的方法來做到這一點?

在此先感謝!

回答

1
df <- read.table(header=T, text = " 
    lon lat date value 
    1 1 1 1 18.00000 
    2 2 1 1 17.83333 
    3 3 1 1 18.83333 
    4 4 1 1 20.50000") 

    # Your melted data frame 
    df 
    # lon lat date value 
    # 1 1 1 1 18.00000 
    # 2 2 1 1 17.83333 
    # 3 3 1 1 18.83333 
    # 4 4 1 1 20.50000 

    df$Dates <- seq(as.Date("1986-01-01"), by = "month", length.out = 4) 
    df 
    # lon lat date value  Dates 
    # 1 1 1 1 18.00000 1986-01-01 
    # 2 2 1 1 17.83333 1986-02-01 
    # 3 3 1 1 18.83333 1986-03-01 
    # 4 4 1 1 20.50000 1986-04-01 
+0

好的,這就是我想要的,比預期的更容易:)非常感謝! – user3231352

3

我們可以使用seq

seq(as.Date("1986-01-01"), length.out = nrow(dat), by = "1 month") 
#[1] "1986-01-01" "1986-02-01" "1986-03-01" "1986-04-01" 

或者像@Frank在評論中提到的,如果這是基於「日期」欄

seq(as.Date("1986-01-01"), length.out = 12, by = "1 month")[dat$date] 
+2

假設OP的日期支付12個月像1..12(看起來可能),他們可以做seq(as.Date(「1986-01-01」),length.out = 12,by =「1 month」)[dat $ date]',我猜。 – Frank

+0

@評論評論你能解釋一下嗎?哦,我知道了..抱歉..謝謝你。 :) –

+1

@akrun好的一個。 –