我们如何根据R中的特定标准(例如日期)排列两组数据

时间:2018-05-22 08:00:44

标签: r cbind

这与R中的数据操作和清理有关。

我有数据集1:

Date   time Range Waterconsumption    
1/1/01 0300 31km  2.0liters
2/1/01 0800 30km  1.8liters
3/1/01 0300 33km  1.7liters
4/1/01 0600 32km  1.8liters
5/1/01 0800 28km  1.7liters
6/1/01 0300 35km  1.6liters
7/1/01 0800 31km  1.8liters

还有数据集2:

Date   time heatlost weight    
1/1/01 0300 0.27     61.5kg
2/1/01 0800 0.33     62.0kg
5/1/01 0800 0.69     61.7kg
6/1/01 0300 0.15     61.8kg
7/1/01 0800 0.63     62.0kg

如您所见,数据集2已丢失一些日期(从3/1/01到4/1/01)。

那么如何使用cbind组合数据集1和2,即根据日期在waterconsumption(dataset1)后插入heatlost和weight?

1 个答案:

答案 0 :(得分:2)

您可以使用库dplyr::left_join(df1, df2, "time")

首先让我们生成一些数据,以反映上面项目中的变量:

df1 <- 
  data.frame(
    id = c(1:4),
    time = c(1:4), 
    range = floor(runif(4, 28,32)),
    watercon = round(runif(4,1.5,1.7),2)
  )

df2 <- 
  data.frame(
    id = c(1,4),
    time = c(1,4), 
    heatlost = c(0.25,0.33),
    weight = c(62.5,61.4)
  )

df2根据您的原始问题有一些缺失值,当我们应用left_join时,这些值将替换为NA

如果您按“时间”应用left_join加入,然后使用select仅保留所需的变量:

library(dplyr)
left_join(df1, df2, "time") %>% 
  select(time, range, watercon, heatlost, weight)

您将获得返回的数据框:

time       range   watercon heatlost    weight
    1          30      1.52     0.25      62.5
    2          29      1.55       NA        NA
    3          29      1.51       NA        NA
    4          30      1.53     0.33       61.4