R 计算数据帧的最新列之间的差异
如何获得数据帧的R 计算数据帧的最新列之间的差异,r,R,如何获得数据帧的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
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"))
您知道如何解决此问题吗?您不需要在此处应用
:
as.numeric(as.Date(df$Date2, "%d/%m/%Y") - as.Date(df$Date1, "%d/%m/%Y"))
#[1] 27908 24125 27917 28296
difftime
没有单位
作为年
。最大单位
为周。您可以将周值除以52.25,得到使用年份lubridate
的time\u 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
@Jeni It选择包含日期的列(此处为date1和date2),并对其应用函数dmy
,将列更改为日期。
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