简体   繁体   English

将大列(4137 行)拆分并转置为与 R 中的行(196 行,21 列)长度相同的几行

[英]Split and transpose large column (4137 rows) into several rows of the same length the row (196 rows, 21 columns) in R

I have a problem with R.我对 R 有疑问。

I have created the following two tables.我创建了以下两个表。

Sheet 1: "long_strategic_return_event_window"表 1:“long_strategic_return_event_window”

Date日期 Relative_day相对日 daily_return_acquirer daily_return_acquirer CUSIPID CUSIPID
2011-03-14 2011-03-14 -10 -10 0.00000000 0.00000000 00187E203280 00187E203280
2011-03-15 2011-03-15 -9 -9 0.00000000 0.00000000 00187E203280 00187E203280
2011-03-16 2011-03-16 -8 -8 0.02400000 0.02400000 00187E203280 00187E203280
2011-03-17 2011-03-17 -7 -7 -0.02343750 -0.02343750 00187E203280 00187E203280
.... …… .... …… .... …… .... ……
.... …… .... …… .... …… .... ……
2011-04-07 2011-04-07 8 8 -0.03488372 -0.03488372 00187E203280 00187E203280
2011-04-08 2011-04-08 9 9 -0.04953146 -0.04953146 00187E203280 00187E203280
2011-04-11 2011-04-11 10 10 -0.00422535 -0.00422535 00187E203280 00187E203280
2016-01-15 2016-01-15 -10 -10 -0.01362530 -0.01362530 0028241001499 0028241001499
2016-01-19 2016-01-19 -9 -9 -0.00271337 -0.00271337 0028241001499 0028241001499
2016-01-20 2016-01-20 -8 -8 -0.01162503 -0.01162503 0028241001499 0028241001499
2016-01-21 2016-01-21 -7 -7 -0.01201201 -0.01201201 0028241001499 0028241001499
.... …… .... …… .... …… .... ……
.... …… .... …… .... …… .... ……

Sheet 2: "strategic_realizedreturn"表 2:“strategic_realizedreturn”

ROW NAME行名 cusip_acquirer cusip_acquirer RR(-10) RR(-10) RR(-9) RR(-9) RR(-8) RR(-8) RR(-7) RR(-7) RR(-6) RR(-6) RR(-5) RR(-5) RR(-4) RR(-4) RR(-3) RR(-3) RR(-2) RR(-2) RR(-1) RR(-1) RR(0) RR(0) RR(1) RR(1) RR(2) RR(2) RR(3) RR(3) RR(4) RR(4) RR(5) RR(5) RR(6) RR(6) RR(7) RR(7) RR(8) RR(8) RR(9) RR(9) RR(10) RR(10)
00187E203280 00187E203280 00187E203 00187E203 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用
0028241001499 0028241001499 002824100 002824100 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用
00287Y1092353 00287Y1092353 00287Y109 00287Y109 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用
00430U10332 00430U10332 00430U103 00430U103 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用
004498101906 004498101906 004498101 004498101 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用 NA不适用

I am desperately trying to take the column of sheet1$daily_return_acquirer and transpose it in the correct row of sheet2 if the CUSIPID of Sheet 1 is equal to the row name of sheet 2.如果工作表 1 的 CUSIPID 等于工作表 2 的行名,我正拼命尝试获取 sheet1$daily_return_acquirer 的列并将其转置到 sheet2 的正确行中。

Every CUSIPID on Sheet 1 has exactly 21 values of daily_return_acquirer, which fit into the 21 columns of sheet 2. Sheet1$Relative_day should be equal to the rows on sheet 2 so: -10 = RR(-10), -9 = RR(-9), ..., 10=RR(10)工作表 1 上的每个 CUSIPID 恰好有 21 个 daily_return_acquirer 值,它们适合工作表 2 的 21 列。Sheet1$Relative_day 应该等于工作表 2 上的行,因此:-10 = RR(-10), -9 = RR( -9), ..., 10=RR(10)

I have created a minimal reproducible example for both sheets to make it more understandable.我为两张纸创建了一个最小的可重现示例,以使其更易于理解。 I hope you can help me!我希望你能帮帮我!

Sheet 1: "long_strategic_return_event_window"

structure(list(Date = structure(c(15047, 15048, 15049, 15050, 
15051, 15054, 15055, 15056, 15057, 15058, 15061, 15062, 15063, 
15064, 15065, 15068, 15069, 15070, 15071, 15072, 15075, 16815, 
16819, 16820, 16821, 16822, 16825, 16826, 16827, 16828, 16829, 
16832, 16833, 16834, 16835, 16836, 16839, 16840, 16841, 16842, 
16843, 16847, 18057, 18058, 18059, 18060, 18061, 18064, 18065, 
18066, 18067, 18068, 18071, 18072, 18073, 18074, 18075, 18078, 
18079, 18080, 18082, 18085, 18086, 14687, 14690, 14691, 14692, 
14693, 14694, 14697, 14698, 14699, 14700, 14704, 14705, 14706, 
14707, 14708, 14711, 14712, 14713, 14714, 14715, 14718, 15957, 
15958, 15959, 15960, 15961, 15964, 15965, 15966, 15967, 15968, 
15971, 15972, 15973, 15974, 15975, 15978, 15979, 15980, 15981, 
15982, 15985), class = "Date"), relative_day = c(-10L, -9L, -8L, 
-7L, -6L, -5L, -4L, -3L, -2L, -1L, 0L, 1L, 2L, 3L, 4L, 5L, 6L, 
7L, 8L, 9L, 10L, -10L, -9L, -8L, -7L, -6L, -5L, -4L, -3L, -2L, 
-1L, 0L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, -10L, -9L, 
-8L, -7L, -6L, -5L, -4L, -3L, -2L, -1L, 0L, 1L, 2L, 3L, 4L, 5L, 
6L, 7L, 8L, 9L, 10L, -10L, -9L, -8L, -7L, -6L, -5L, -4L, -3L, 
-2L, -1L, 0L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, -10L, 
-9L, -8L, -7L, -6L, -5L, -4L, -3L, -2L, -1L, 0L, 1L, 2L, 3L, 
4L, 5L, 6L, 7L, 8L, 9L, 10L), daily_return_acquirer = c(0, 0, 
0.0240000000000001, -0.0234375000000001, -0.00799999999999997, 
0.0161290322580645, 0.0857142857142857, -0.00584795321637427, 
0.125, 0.0261437908496731, -0.0140127388535031, -0.0116279069767442, 
0.0457516339869281, 0.01875, -0.049079754601227, 0.0129032258064516, 
0, -0.0140127388535031, -0.0348837209302326, -0.0495314591700134, 
-0.00422535211267597, -0.0136253041362531, -0.00271336951159347, 
-0.0116250309176354, -0.0120120120120121, 0.0139311043566364, 
-0.00924306769922569, 0.0126071608673727, 0.00771912350597615, 
-0.0929083271559179, 0.0310542086624898, 0.0158520475561427, 
-0.0148244473342003, 0.0036958817317846, -0.000263019463440429, 
-0.015785319652723, 0.00133654103180979, -0.012279765082755, 
0.0056756756756757, -0.0233808116097822, 0.0217391304347826, 
0.0231618637220576, -0.00619914761720269, 0.0158544509421702, 
0.00511705257771513, 0.00483645157184688, -0.00329322355921476, 
-0.00050832380226194, -0.00508582326764152, -0.00817891373801918, 
0.0094060043808788, 0.00561654327291291, -0.00418888042650417, 
-0.162523900573614, 0.0350076103500761, 0.0294117647058824, 0.0388571428571428, 
0.00935093509350944, 0.0113079019073569, 0.00983429880102371, 
-0.0262806830309498, -0.0242498972461981, 0.000280819994383544, 
0.00761035007610347, -0.00755287009063441, 0.004566210045662, 
-0.0212121212121212, -0.00928792569659437, 0.0046874999999999, 
-0.0171073094867806, -0.0348101265822786, 0.00983606557377057, 
0.0551948051948052, 0.0784615384615384, 0.00713266761768899, 
-0.00141643059490082, 0.00425531914893621, 0.00423728813559326, 
-0.0295358649789029, 0.0159420289855072, 0.00427960057061345, 
0.0198863636363636, -0.0027855153203342, 0.00139664804469271, 
0.00590511097536142, 0.00485829959514174, 0.0394842868654311, 
-0.00523255813953494, 0.00331190337034876, -0.00349514563106796, 
0.0134450506625097, 0.00596039223226307, -0.000382262996941956, 
0.011281070745698, 0.00226885989790126, 0.00811167704206753, 
0.00243263473053897, 0.00746686578308752, 0.00222345747637585, 
-0.00055463117027179, 0.0177580466148724, 0.00308978553253353, 
-0.0108715346983148, -0.00696098186481045, -0.0084855192768862
), CusipID = c("00187E203280", "00187E203280", "00187E203280", 
"00187E203280", "00187E203280", "00187E203280", "00187E203280", 
"00187E203280", "00187E203280", "00187E203280", "00187E203280", 
"00187E203280", "00187E203280", "00187E203280", "00187E203280", 
"00187E203280", "00187E203280", "00187E203280", "00187E203280", 
"00187E203280", "00187E203280", "0028241001499", "0028241001499", 
"0028241001499", "0028241001499", "0028241001499", "0028241001499", 
"0028241001499", "0028241001499", "0028241001499", "0028241001499", 
"0028241001499", "0028241001499", "0028241001499", "0028241001499", 
"0028241001499", "0028241001499", "0028241001499", "0028241001499", 
"0028241001499", "0028241001499", "0028241001499", "00287Y1092353", 
"00287Y1092353", "00287Y1092353", "00287Y1092353", "00287Y1092353", 
"00287Y1092353", "00287Y1092353", "00287Y1092353", "00287Y1092353", 
"00287Y1092353", "00287Y1092353", "00287Y1092353", "00287Y1092353", 
"00287Y1092353", "00287Y1092353", "00287Y1092353", "00287Y1092353", 
"00287Y1092353", "00287Y1092353", "00287Y1092353", "00287Y1092353", 
"00430U10332", "00430U10332", "00430U10332", "00430U10332", "00430U10332", 
"00430U10332", "00430U10332", "00430U10332", "00430U10332", "00430U10332", 
"00430U10332", "00430U10332", "00430U10332", "00430U10332", "00430U10332", 
"00430U10332", "00430U10332", "00430U10332", "00430U10332", "00430U10332", 
"00430U10332", "004498101906", "004498101906", "004498101906", 
"004498101906", "004498101906", "004498101906", "004498101906", 
"004498101906", "004498101906", "004498101906", "004498101906", 
"004498101906", "004498101906", "004498101906", "004498101906", 
"004498101906", "004498101906", "004498101906", "004498101906", 
"004498101906", "004498101906")), row.names = c(NA, -105L), class = c("data.table", 
"data.frame"), .internal.selfref = <pointer: 0x0000022eca291ef0>)

Sheet 2: "strategic_realizedreturn"

structure(list(cusip_acquirer = structure(1:5, .Label = c("00187E203", 
"002824100", "00287Y109", "00430U103", "004498101"), class = "factor"), 
    `RR(-10)` = c("NA", "NA", "NA", "NA", "NA"), `RR(-9)` = c("NA", 
    "NA", "NA", "NA", "NA"), `RR(-8)` = c("NA", "NA", "NA", "NA", 
    "NA"), `RR(-7)` = c("NA", "NA", "NA", "NA", "NA"), `RR(-6)` = c("NA", 
    "NA", "NA", "NA", "NA"), `RR(-5)` = c("NA", "NA", "NA", "NA", 
    "NA"), `RR(-4)` = c("NA", "NA", "NA", "NA", "NA"), `RR(-3)` = c("NA", 
    "NA", "NA", "NA", "NA"), `RR(-2)` = c("NA", "NA", "NA", "NA", 
    "NA"), `RR(-1)` = c("NA", "NA", "NA", "NA", "NA"), `RR(0)` = c("NA", 
    "NA", "NA", "NA", "NA"), `RR(1)` = c("NA", "NA", "NA", "NA", 
    "NA"), `RR(2)` = c("NA", "NA", "NA", "NA", "NA"), `RR(3)` = c("NA", 
    "NA", "NA", "NA", "NA"), `RR(4)` = c("NA", "NA", "NA", "NA", 
    "NA"), `RR(5)` = c("NA", "NA", "NA", "NA", "NA"), `RR(6)` = c("NA", 
    "NA", "NA", "NA", "NA"), `RR(7)` = c("NA", "NA", "NA", "NA", 
    "NA"), `RR(8)` = c("NA", "NA", "NA", "NA", "NA"), `RR(9)` = c("NA", 
    "NA", "NA", "NA", "NA"), `RR(10)` = c("NA", "NA", "NA", "NA", 
    "NA")), row.names = c("00187E203280", "0028241001499", "00287Y1092353", 
"00430U10332", "004498101906"), class = "data.frame")

Unless I'm mistaken (and I might be because you haven't filled in any of the values in the shell of your desired output), this is simply a pivot_wider combined with the addition of row names from the output shell:除非我弄错了(我可能是因为您没有填写所需输出的 shell 中的任何值),这只是一个pivot_wider与 output Z2525E4818B7E424FE 中添加的行名相结合

long_strategic_return_event_window %>% 
  select(-Date) %>% 
  pivot_wider(
    names_from=relative_day, 
    names_prefix="RR", 
    values_from=daily_return_acquirer
  ) %>% 
  add_column(
    `ROW NAME`=rownames(strategic_realizedreturn), 
    .before=1
  )

Giving给予

# A tibble: 5 x 23
  `ROW NAME` CusipID  `RR-10`   `RR-9`   `RR-8`   `RR-7`   `RR-6`   `RR-5`   `RR-4`   `RR-3`   `RR-2`  `RR-1`      RR0      RR1      RR2      RR3      RR4      RR5     RR6      RR7
  <chr>      <chr>      <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>   <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>   <dbl>    <dbl>
1 00187E203… 00187E…  0        0        0.024   -0.0234  -0.00800  1.61e-2  0.0857  -0.00585  1.25e-1 0.0261  -0.0140  -0.0116   0.0458   1.88e-2 -0.0491   1.29e-2  0      -0.0140 
2 002824100… 002824… -0.0136  -0.00271 -0.0116  -0.0120   0.0139  -9.24e-3  0.0126   0.00772 -9.29e-2 0.0311   0.0159  -0.0148   0.00370 -2.63e-4 -0.0158   1.34e-3 -0.0123  0.00568
3 00287Y109… 00287Y… -0.00620  0.0159   0.00512  0.00484 -0.00329 -5.08e-4 -0.00509 -0.00818  9.41e-3 0.00562 -0.00419 -0.163    0.0350   2.94e-2  0.0389   9.35e-3  0.0113  0.00983
4 00430U103… 00430U…  0.00761 -0.00755  0.00457 -0.0212  -0.00929  4.69e-3 -0.0171  -0.0348   9.84e-3 0.0552   0.0785   0.00713 -0.00142  4.26e-3  0.00424 -2.95e-2  0.0159  0.00428
5 004498101… 004498…  0.00591  0.00486  0.0395  -0.00523  0.00331 -3.50e-3  0.0134   0.00596 -3.82e-4 0.0113   0.00227  0.00811  0.00243  7.47e-3  0.00222 -5.55e-4  0.0178  0.00309
# … with 3 more variables: RR8 <dbl>, RR9 <dbl>, RR10 <dbl>

Though, personally, I'd choose slightly more user friendly-column names for R-10 etc...不过,就我个人而言,我会为R-10等选择更易于使用的列名……

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM