【问题标题】:Merge repeated measurements dataframe in R在 R 中合并重复测量数据框
【发布时间】:2015-02-25 18:15:14
【问题描述】:

我想合并两个重复测量的数据框。它们都有这样的格式,不同的是第一个有observation1,另一个有observation2。

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 中选择另一行并一遍又一遍地执行。但由于数据帧都有几百万行,这非常慢。

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

【问题讨论】:

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

标签: r merge dataframe


【解决方案1】:

以下,@Anrew Taylor 一种直接的方法是使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-04
    • 2018-05-11
    • 1970-01-01
    • 2019-02-06
    • 2021-02-22
    • 2018-11-27
    • 1970-01-01
    • 2012-04-06
    相关资源
    最近更新 更多