Как нам организовать два набора данных в соответствии с определенными критериями, например, дата, в R - PullRequest
0 голосов
/ 22 мая 2018

Это касается обработки данных и очистки в 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 потерял несколько дат (с 01.01.01 по 01.01.01).

Итак, как я могу объединить наборы данных 1 и 2, используя cbind, т.е. с учетом теплопотерь и веса за расходом воды (набор данных1) в соответствии с датой?

1 Ответ

0 голосов
/ 22 мая 2018

Вы можете использовать библиотеку 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
...