Вычислить разницу между столбцами на текущий момент в фрейме данных - PullRequest
0 голосов
/ 27 мая 2020

Как я могу узнать разницу между Date1 и Date2 столбцами моего фрейма данных?

   Date1        Tfd             Date2       Sex
 13/08/1936      3           09/01/2013      M     
 25/04/1948      2           14/05/2014      M
 26/01/1939      1           03/07/2015      F
 13/02/1935      8           03/08/2012      F

Я пробовал:

age<-apply(df[, c("Date1", "Date2")], function(x, y) difftime(strptime(y, format = "%d.%m.%Y"), strptime(x, format = "%d.%m.%Y"),units="years"))

, но получаю эту ошибку:

Error in strptime(y, format = "%d.%m.%Y") : 
  argument "y" is missing, with no default

Вы знаете, как я могу это решить?

1 Ответ

1 голос
/ 27 мая 2020

Здесь apply не требуется:

as.numeric(as.Date(df$Date2, "%d/%m/%Y") - as.Date(df$Date1, "%d/%m/%Y"))
#[1] 27908 24125 27917 28296

difftime не имеет units как 'years'. Максимальное количество units недель. Вы можете разделить значение недели на 52,25, чтобы получить год использования lubridate функции time_length.

Или используя dplyr с difftime

library(dplyr)
library(lubridate)

df %>%
  mutate_at(vars(starts_with('date')), lubridate::dmy) %>%
  mutate(diff = time_length(difftime(Date2, Date1), 'years'))

#       Date1 Tfd      Date2 Sex diff
#1 1936-08-13   3 2013-01-09   M 76.4
#2 1948-04-25   2 2014-05-14   M 66.1
#3 1939-01-26   1 2015-07-03   F 76.4
#4 1935-02-13   8 2012-08-03   F 77.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...