我有两个数据帧;一个是我的动物的个人ID代码列表,带有相关的出现日期(31行),另一个是这些人的体重数据日期列表(8474行)。我想计算出出现日期以来每个体重数据行的时间差,以调查每只动物出现后体重的增加。
我想在权重数据框中添加一个新列,该列的出现日期与正确的个人相关联,以便每一行都有个人ID,该个人的出现日期和权重日期。然后,我可以计算出天数差异。
我研究了用于连接数据框的不同方法,但是找不到用于此特定功能的任何方法来关联新数据
我想要权重数据中的新列,其中包含每个人的出现日期
答案 0 :(得分:0)
我认为您正在寻找merge
。我制作了与您相似的示例数据框来辅助练习。
EmDates <- as.POSIXct(c("06/28/2019", "06/29/2019", "06/30/2019"), origin = "EST", format = "%m/%d/%Y")
Ind_ID <- c(1,2,3)
Emerg <- as.data.frame(EmDates)
Emerg <- cbind(Emerg, Ind_ID)
Ind_ID <- NULL
WeighDates <- as.POSIXct(c("07/28/2019", "07/29/2019", "07/30/2019"), tz = "EST", format = "%m/%d/%Y")
Ind_ID <- c(3,2,1)
Weigh <- as.data.frame(WeighDates)
Weigh <- cbind(Weigh, Ind_ID)
Target_DF <- merge(Emerg, Weigh, by = "Ind_ID")
另外,dplyr join family可以在这里提供帮助,还有更多选择。左联接将所有数据保留在左(第一个)数据帧中,所有匹配的数据保留在右(第二个)数据帧中。上方链接中的其他联接类型将选择不同的数据。
library(dplyr)
EmDates <- as.POSIXct(c("06/28/2019", "06/29/2019", "06/30/2019"), origin = "EST", format = "%m/%d/%Y")
Ind_ID_Emerg <- c(1,2,3)
Emerg <- as.data.frame(EmDates)
Emerg <- cbind(Emerg, Ind_ID_Emerg)
WeighDates <- as.POSIXct(c("07/28/2019", "07/29/2019", "07/30/2019"), tz = "EST", format = "%m/%d/%Y")
Ind_ID_Weigh <- c(3,2,1)
Weigh <- as.data.frame(WeighDates)
Weigh <- cbind(Weigh, Ind_ID_Weigh)
Target_DF <- left_join(Emerg, Weigh, by = c("Ind_ID_Emerg" = "Ind_ID_Weigh"))