合并R中的重复测量数据帧

时间:2015-02-25 18:15:14

标签: r merge dataframe

我想合并两个重复测量的数据帧。它们都有这样的格式,不同之处在于第一个有观察1,而另一个有观察2。

Location    Date    Time    observation1
1   1/1/2000    6:00    20
1   1/1/2000    7:00    14
1   1/1/2000    8:00    35
1   1/2/2000    6:00    20
1   1/2/2000    7:00    14
1   1/2/2000    8:00    35
2   1/1/2000    6:00    10
2   1/1/2000    7:00    14
2   1/1/2000    8:00    45
2   1/2/2000    6:00    30
2   1/2/2000    7:00    24
2   1/2/2000    8:00    35
.
.
100 10/31/2000  6:00    80
100 10/31/2000  7:00    80
100 10/31/2000  8:00    80

我想对特定日期和时间的每个位置进行处理,观察1和观察2可以匹配。

我计划使用for循环来执行此操作,这意味着我从dataframe1中选择一行,将其与dataframe2匹配,然后从dataframe1中选择另一行并反复执行。但由于数据帧都有数百万行,因此速度非常慢。

有人能提出更有效的方法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

关注,@安娜泰勒 直接的方法是使用Merge:一个可重现的例子如下:

Location = c(1,1,2,3,4,1)
Date1 = c(as.Date("2014-01-01"), as.Date("2000-01-01"), as.Date("2005-01-01"), as.Date("2001-12-01"), as.Date("2001-11-01"), as.Date("2001-10-01"))
Time1 = c(20,30,40,50,60,70)
Observation1 = c(1,2,3,4,5,6)

Date2 = c(as.Date("2014-10-01"), as.Date("2001-01-01"), as.Date("2005-01-01"), as.Date("2001-12-01"), as.Date("2001-11-01"), as.Date("2001-10-01"))
Time2 = c(20,20,40,50,50,70)
Observation2 = c(7,8,9,10,11,12)


data1 = data.frame(Location = Location, Date = Date, Time = Time, Observation1 = Observation1)
data2 = data.frame(Location = Location, Date = Date2, Time = Time2, Observation2 = Observation2)

merge(data1,data2, by = c("Date", "Time", "Location"))

那将返回:

        Date Time Location Observation1 Observation2
1 2001-10-01   70        1            6           12
2 2001-12-01   50        3            4           10
3 2005-01-01   40        2            3            9