如何为不同的变量合并具有不同事件日期的数据集?
How to merge dataset with different eventdates for different variables?
我需要你的帮助来处理我的面板数据集。我有两个数据集,一个是关于股票数据(股票代码、日期、时间和收盘价),另一个数据集包含事件日期(事件日期、事件时间和股票代码)。我的问题是我对不同的符号有不同的事件日期,我不太确定如何在 R 中合并这两个数据集。
我试过这个:
Companies_Events <- merge (Companies, Eventdates, by = c("Symbol", "date") , all = FALSE)
而且我也尝试只为事件添加一列,但它也不起作用,并且为我返回 0 个事件值..
Companies$Events <- ifelse(Companies$date == Eventdates$date & Companies$time == Eventdates$time & Companies$Symbol == Eventdates$Symbol, 1, 0)
两者都不起作用,它们都只为我的数据集返回 0 个值。你知道我在代码中做错了什么吗?
我的数据集看起来像这样,但目标是将数据集合并在一起。
Symbol Date time Close
A 12.03.2020 06:00 65,542503
A 12.03.2020 07:00 72,334999
A 12.03.2020 08:00 63,857498
A 12.03.2020 09:00 65,057499
A 12.03.2020 10:00 67,4925
A 12.03.2020 11:00 66,552502
A 12.03.2020 12:00 65,215
A 12.03.2020 13:00 66,6675
A 12.03.2020 14:00 62,195
A 12.03.2020 15:00 52,310001
A 12.03.2020 16:00 51,092499
A 14.03.2020 06:00 66,542503
A 14.03.2020 07:00 71,334999
A 14.03.2020 08:00 68,857498
A 14.03.2020 09:00 62,057499
A 14.03.2020 10:00 69,4925
A 14.03.2020 11:00 60,552502
A 14.03.2020 12:00 63,215
A 14.03.2020 13:00 61,6675
A 14.03.2020 14:00 61,195
A 14.03.2020 15:00 57,310001
A 14.03.2020 16:00 56,092499
B 12.03.2020 08:00 186,960007
B 12.03.2020 09:00 184,360001
B 12.03.2020 10:00 171,130005
B 12.03.2020 11:00 182,600006
B 12.03.2020 12:00 172,949997
B 12.03.2020 13:00 160,080002
B 12.03.2020 14:00 175,830002
B 12.03.2020 15:00 152,009995
B 12.03.2020 16:00 157,889999
B 12.03.2020 17:00 148,479996
B 12.03.2020 18:00 152,25
B 12.03.2020 19:00 146,830002
B 15.03.2020 08:00 134,960007
B 15.03.2020 09:00 135,360001
B 15.03.2020 10:00 140,130005
B 15.03.2020 11:00 145,600006
B 15.03.2020 12:00 147,949997
B 15.03.2020 13:00 138,080002
B 15.03.2020 14:00 137,830002
B 15.03.2020 15:00 136,009995
B 15.03.2020 16:00 138,889999
B 15.03.2020 17:00 132,479996
B 15.03.2020 18:00 130,25
B 15.03.2020 19:00 12,830002
还有这个:
Symbol Event Event1 Event1_date Event1_time
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 12.03.2020 1 12/03/2020 10:00
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 1 14/03/2020 11:00
A 14.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 1 12/03/2020 13:00
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 1 12/03/2020 12:00
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
你能帮我正确合并数据集吗?
非常感谢!
我认为在你的情况下你可以做一个 cbind
:
cbind(df1, df2[,2:5])
或者如果你想 join
或 merge
你必须在每个 df 中放置一个 unqiue 标识符。
df1 <- df %>%
select(Symbol, Date, time, Close) %>%
mutate(Date = dmy(Date)) %>%
mutate(id = row_number())
df2 <- df %>%
select(1, 5:8) %>%
mutate(across(c(Event, Event1_date), dmy)) %>%
mutate(id = row_number())
left_join(df1, df2)
输出:
`cbind(df1, df2[,2:5])
Symbol Date time Close Event Event1 Event1_date Event1_time
1 A 2020-03-12 06:00:00 65542503 2020-03-12 NA <NA> NA
2 A 2020-03-12 07:00:00 72334999 2020-03-12 NA <NA> NA
3 A 2020-03-12 08:00:00 63857498 2020-03-12 NA <NA> NA
4 A 2020-03-12 09:00:00 65057499 2020-03-12 NA <NA> NA
5 A 2020-03-12 10:00:00 674925 2020-03-12 1 2020-03-12 10:00:00
6 A 2020-03-12 11:00:00 66552502 2020-03-12 NA <NA> NA
7 A 2020-03-12 12:00:00 65215 2020-03-12 NA <NA> NA
8 A 2020-03-12 13:00:00 666675 2020-03-12 NA <NA> NA
9 A 2020-03-12 14:00:00 62195 2020-03-12 NA <NA> NA
10 A 2020-03-12 15:00:00 52310001 2020-03-12 NA <NA> NA
11 A 2020-03-12 16:00:00 51092499 2020-03-12 NA <NA> NA
12 A 2020-03-14 06:00:00 66542503 2020-03-14 NA <NA> NA
13 A 2020-03-14 07:00:00 71334999 2020-03-14 NA <NA> NA
14 A 2020-03-14 08:00:00 68857498 2020-03-14 NA <NA> NA
15 A 2020-03-14 09:00:00 62057499 2020-03-14 NA <NA> NA
16 A 2020-03-14 10:00:00 694925 2020-03-14 NA <NA> NA
17 A 2020-03-14 11:00:00 60552502 2020-03-14 1 2020-03-14 11:00:00
18 A 2020-03-14 12:00:00 63215 2020-03-14 NA <NA> NA
19 A 2020-03-14 13:00:00 616675 2020-03-14 NA <NA> NA
20 A 2020-03-14 14:00:00 61195 2020-03-14 NA <NA> NA
21 A 2020-03-14 15:00:00 57310001 2020-03-14 NA <NA> NA
22 A 2020-03-14 16:00:00 56092499 2020-03-14 NA <NA> NA
23 B 2020-03-12 08:00:00 186960007 2020-03-12 NA <NA> NA
24 B 2020-03-12 09:00:00 184360001 2020-03-12 NA <NA> NA
25 B 2020-03-12 10:00:00 171130005 2020-03-12 NA <NA> NA
26 B 2020-03-12 11:00:00 182600006 2020-03-12 NA <NA> NA
27 B 2020-03-12 12:00:00 172949997 2020-03-12 NA <NA> NA
28 B 2020-03-12 13:00:00 160080002 2020-03-12 1 2020-03-12 13:00:00
29 B 2020-03-12 14:00:00 175830002 2020-03-12 NA <NA> NA
30 B 2020-03-12 15:00:00 152009995 2020-03-12 NA <NA> NA
31 B 2020-03-12 16:00:00 157889999 2020-03-12 NA <NA> NA
32 B 2020-03-12 17:00:00 148479996 2020-03-12 NA <NA> NA
33 B 2020-03-12 18:00:00 15225 2020-03-12 NA <NA> NA
34 B 2020-03-12 19:00:00 146830002 2020-03-12 NA <NA> NA
35 B 2020-03-15 08:00:00 134960007 2020-03-15 NA <NA> NA
36 B 2020-03-15 09:00:00 135360001 2020-03-15 NA <NA> NA
37 B 2020-03-15 10:00:00 140130005 2020-03-15 NA <NA> NA
38 B 2020-03-15 11:00:00 145600006 2020-03-15 NA <NA> NA
39 B 2020-03-15 12:00:00 147949997 2020-03-15 1 2020-03-12 12:00:00
40 B 2020-03-15 13:00:00 138080002 2020-03-15 NA <NA> NA
41 B 2020-03-15 14:00:00 137830002 2020-03-15 NA <NA> NA
42 B 2020-03-15 15:00:00 136009995 2020-03-15 NA <NA> NA
43 B 2020-03-15 16:00:00 138889999 2020-03-15 NA <NA> NA
44 B 2020-03-15 17:00:00 132479996 2020-03-15 NA <NA> NA
45 B 2020-03-15 18:00:00 13025 2020-03-15 NA <NA> NA
46 B 2020-03-15 19:00:00 12830002 2020-03-15 NA <NA> NA
我需要你的帮助来处理我的面板数据集。我有两个数据集,一个是关于股票数据(股票代码、日期、时间和收盘价),另一个数据集包含事件日期(事件日期、事件时间和股票代码)。我的问题是我对不同的符号有不同的事件日期,我不太确定如何在 R 中合并这两个数据集。
我试过这个:
Companies_Events <- merge (Companies, Eventdates, by = c("Symbol", "date") , all = FALSE)
而且我也尝试只为事件添加一列,但它也不起作用,并且为我返回 0 个事件值..
Companies$Events <- ifelse(Companies$date == Eventdates$date & Companies$time == Eventdates$time & Companies$Symbol == Eventdates$Symbol, 1, 0)
两者都不起作用,它们都只为我的数据集返回 0 个值。你知道我在代码中做错了什么吗?
我的数据集看起来像这样,但目标是将数据集合并在一起。
Symbol Date time Close
A 12.03.2020 06:00 65,542503
A 12.03.2020 07:00 72,334999
A 12.03.2020 08:00 63,857498
A 12.03.2020 09:00 65,057499
A 12.03.2020 10:00 67,4925
A 12.03.2020 11:00 66,552502
A 12.03.2020 12:00 65,215
A 12.03.2020 13:00 66,6675
A 12.03.2020 14:00 62,195
A 12.03.2020 15:00 52,310001
A 12.03.2020 16:00 51,092499
A 14.03.2020 06:00 66,542503
A 14.03.2020 07:00 71,334999
A 14.03.2020 08:00 68,857498
A 14.03.2020 09:00 62,057499
A 14.03.2020 10:00 69,4925
A 14.03.2020 11:00 60,552502
A 14.03.2020 12:00 63,215
A 14.03.2020 13:00 61,6675
A 14.03.2020 14:00 61,195
A 14.03.2020 15:00 57,310001
A 14.03.2020 16:00 56,092499
B 12.03.2020 08:00 186,960007
B 12.03.2020 09:00 184,360001
B 12.03.2020 10:00 171,130005
B 12.03.2020 11:00 182,600006
B 12.03.2020 12:00 172,949997
B 12.03.2020 13:00 160,080002
B 12.03.2020 14:00 175,830002
B 12.03.2020 15:00 152,009995
B 12.03.2020 16:00 157,889999
B 12.03.2020 17:00 148,479996
B 12.03.2020 18:00 152,25
B 12.03.2020 19:00 146,830002
B 15.03.2020 08:00 134,960007
B 15.03.2020 09:00 135,360001
B 15.03.2020 10:00 140,130005
B 15.03.2020 11:00 145,600006
B 15.03.2020 12:00 147,949997
B 15.03.2020 13:00 138,080002
B 15.03.2020 14:00 137,830002
B 15.03.2020 15:00 136,009995
B 15.03.2020 16:00 138,889999
B 15.03.2020 17:00 132,479996
B 15.03.2020 18:00 130,25
B 15.03.2020 19:00 12,830002
还有这个:
Symbol Event Event1 Event1_date Event1_time
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 12.03.2020 1 12/03/2020 10:00
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 12.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 1 14/03/2020 11:00
A 14.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 NA NA
A 14.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 1 12/03/2020 13:00
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 12.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 1 12/03/2020 12:00
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
B 15.03.2020 NA NA
你能帮我正确合并数据集吗?
非常感谢!
我认为在你的情况下你可以做一个 cbind
:
cbind(df1, df2[,2:5])
或者如果你想 join
或 merge
你必须在每个 df 中放置一个 unqiue 标识符。
df1 <- df %>%
select(Symbol, Date, time, Close) %>%
mutate(Date = dmy(Date)) %>%
mutate(id = row_number())
df2 <- df %>%
select(1, 5:8) %>%
mutate(across(c(Event, Event1_date), dmy)) %>%
mutate(id = row_number())
left_join(df1, df2)
输出:
`cbind(df1, df2[,2:5])
Symbol Date time Close Event Event1 Event1_date Event1_time
1 A 2020-03-12 06:00:00 65542503 2020-03-12 NA <NA> NA
2 A 2020-03-12 07:00:00 72334999 2020-03-12 NA <NA> NA
3 A 2020-03-12 08:00:00 63857498 2020-03-12 NA <NA> NA
4 A 2020-03-12 09:00:00 65057499 2020-03-12 NA <NA> NA
5 A 2020-03-12 10:00:00 674925 2020-03-12 1 2020-03-12 10:00:00
6 A 2020-03-12 11:00:00 66552502 2020-03-12 NA <NA> NA
7 A 2020-03-12 12:00:00 65215 2020-03-12 NA <NA> NA
8 A 2020-03-12 13:00:00 666675 2020-03-12 NA <NA> NA
9 A 2020-03-12 14:00:00 62195 2020-03-12 NA <NA> NA
10 A 2020-03-12 15:00:00 52310001 2020-03-12 NA <NA> NA
11 A 2020-03-12 16:00:00 51092499 2020-03-12 NA <NA> NA
12 A 2020-03-14 06:00:00 66542503 2020-03-14 NA <NA> NA
13 A 2020-03-14 07:00:00 71334999 2020-03-14 NA <NA> NA
14 A 2020-03-14 08:00:00 68857498 2020-03-14 NA <NA> NA
15 A 2020-03-14 09:00:00 62057499 2020-03-14 NA <NA> NA
16 A 2020-03-14 10:00:00 694925 2020-03-14 NA <NA> NA
17 A 2020-03-14 11:00:00 60552502 2020-03-14 1 2020-03-14 11:00:00
18 A 2020-03-14 12:00:00 63215 2020-03-14 NA <NA> NA
19 A 2020-03-14 13:00:00 616675 2020-03-14 NA <NA> NA
20 A 2020-03-14 14:00:00 61195 2020-03-14 NA <NA> NA
21 A 2020-03-14 15:00:00 57310001 2020-03-14 NA <NA> NA
22 A 2020-03-14 16:00:00 56092499 2020-03-14 NA <NA> NA
23 B 2020-03-12 08:00:00 186960007 2020-03-12 NA <NA> NA
24 B 2020-03-12 09:00:00 184360001 2020-03-12 NA <NA> NA
25 B 2020-03-12 10:00:00 171130005 2020-03-12 NA <NA> NA
26 B 2020-03-12 11:00:00 182600006 2020-03-12 NA <NA> NA
27 B 2020-03-12 12:00:00 172949997 2020-03-12 NA <NA> NA
28 B 2020-03-12 13:00:00 160080002 2020-03-12 1 2020-03-12 13:00:00
29 B 2020-03-12 14:00:00 175830002 2020-03-12 NA <NA> NA
30 B 2020-03-12 15:00:00 152009995 2020-03-12 NA <NA> NA
31 B 2020-03-12 16:00:00 157889999 2020-03-12 NA <NA> NA
32 B 2020-03-12 17:00:00 148479996 2020-03-12 NA <NA> NA
33 B 2020-03-12 18:00:00 15225 2020-03-12 NA <NA> NA
34 B 2020-03-12 19:00:00 146830002 2020-03-12 NA <NA> NA
35 B 2020-03-15 08:00:00 134960007 2020-03-15 NA <NA> NA
36 B 2020-03-15 09:00:00 135360001 2020-03-15 NA <NA> NA
37 B 2020-03-15 10:00:00 140130005 2020-03-15 NA <NA> NA
38 B 2020-03-15 11:00:00 145600006 2020-03-15 NA <NA> NA
39 B 2020-03-15 12:00:00 147949997 2020-03-15 1 2020-03-12 12:00:00
40 B 2020-03-15 13:00:00 138080002 2020-03-15 NA <NA> NA
41 B 2020-03-15 14:00:00 137830002 2020-03-15 NA <NA> NA
42 B 2020-03-15 15:00:00 136009995 2020-03-15 NA <NA> NA
43 B 2020-03-15 16:00:00 138889999 2020-03-15 NA <NA> NA
44 B 2020-03-15 17:00:00 132479996 2020-03-15 NA <NA> NA
45 B 2020-03-15 18:00:00 13025 2020-03-15 NA <NA> NA
46 B 2020-03-15 19:00:00 12830002 2020-03-15 NA <NA> NA