2014-07-09 28 views
0

我有一個三列數據框。我想申請一個函數來比較第二和第三列,我的函數將創建一個新的列。 一個例子:函數在比較兩列的數據框中

vin <- c("vin1", "vin2", "vin3", "vin4") 
date.fin.obs <- rep(as.Date("2014-07-04"), length(vin)) 
date.fin <- c(as.Date("2014-07-04"), as.Date("2013-03-21"), as.Date("2013-07-06"), 
      as.Date("2014-07-04")) 
df <- data.frame(vin, date.fin.obs, date.fin) 

CumulSurvivants <- function(x, y){ 
# y <- length(x) 
    x.num <- as.numeric(x) 
    y.num <- as.numeric(y) 

# i <- length(x) 
    i <- 0 
    if(x.num == y.num){ 
    return(i) 
    }else{ 
    return(i+1) 
    } 


} 

CumulSurvivants(x = df$date.fin[2], y = df$date.fin.obs[4]) 

似乎工作,但我想通過行兩列行比較,並寫我函數的結果在一個新列。

在此先感謝!

+0

你在找什麼樣的輸出? – A5C1D2H2I1M1N2O1R2T1

+0

爲什麼在你的例子中使用第2行和第4行? –

+0

是在我的例子中,它是第2和第4行 –

回答

1

要計算的時間差,你可以簡單地使用

df$difference <- date.fin.obs - date.fin 

導致

vin date.fin.obs date.fin difference 
1 vin1 2014-07-04 2014-07-04  0 days 
2 vin2 2014-07-04 2013-03-21 470 days 
3 vin3 2014-07-04 2013-07-06 363 days 
4 vin4 2014-07-04 2014-07-04  0 days 

或者,而不是簡單的「減」,使用其他更專業的日期/時間函數以相同的方式,可能使用日期/時間格式。也看看?strptimehttp://www.statmethods.net/input/dates.html

+0

我沒有想到要做的區別...感謝您的幫助! –