2014-07-09 5 views
0

У меня есть кадр данных с тремя столбцами. Я хочу применить функцию для сравнения второго и третьего столбцов, моя функция создаст новый столбец. пример:Функция в dataframe, сравнивая два столбца

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 

Или, вместо простого «минус», можно использовать любые другие более специализированные функции даты/время в так же, возможно, с форматированием даты и времени. Также посмотрите на ?strptime и http://www.statmethods.net/input/dates.html.

+0

Я не думал делать разницу ... спасибо за помощь! –