首页 > 解决方案 > 通过字符变量将一列分成两列

问题描述

我想将 EE.Return 列分为两列,以便标记为最佳的列在一列中,而最差的列在另一列中。数据包含我想保留的缺失变量。列 Date 应该在两个新列之间匹配。我考虑过使用单独的命令,但以前从未使用过它,因此我不确定如何实现它。提前致谢

数据如下所示:

structure(list(Date = structure(c(14640, 14668, 14699, 14699, 
14729, 14729, 14760, 14760, 14790, 14790, 14821, 14821, 14852, 
14852, 14882, 14882, 14913, 14913, 14943, 14943, 14974, 14974, 
15005, 15005, 15033, 15033, 15064, 15064, 15094, 15094, 15125, 
15125, 15155, 15155, 15186, 15186, 15217, 15217, 15247, 15247, 
15278, 15278, 15308, 15308, 15339, 15339, 15370, 15370, 15399, 
15399, 15430, 15430, 15460, 15460, 15491, 15491, 15521, 15521, 
15552, 15552, 15583, 15583, 15613, 15613, 15644, 15644, 15674, 
15674, 15705, 15705, 15736, 15736, 15764, 15764, 15795, 15795, 
15825, 15825, 15856, 15856, 15886, 15886, 15917, 15917, 15948, 
15948, 15978, 15978, 16009, 16009, 16039, 16039, 16070, 16070, 
16101, 16101, 16129, 16129, 16160, 16160, 16190, 16190, 16220, 
16220, 16251, 16251, 16282, 16282, 16311, 16311, 16343, 16343, 
16374, 16374, 16402, 16402, 16435, 16435, 16465, 16465, 16493, 
16493, 16525, 16525, 16555, 16555, 16584, 16584, 16616, 16616, 
16647, 16647, 16678, 16678, 16708, 16708, 16738, 16738, 16769, 
16769, 16800, 16800, 16829, 16829, 16860, 16860, 16891, 16891, 
16920, 16920, 16952, 16952, 16982, 16982, 17011, 17011, 17044, 
17044, 17074, 17074, 17105, 17105, 17135, 17135, 17166, 17166, 
17197, 17197, 17225, 17225, 17256, 17256, 17284, 17284, 17317, 
17317, 17347, 17347, 17378, 17378, 17409, 17409, 17439, 17439, 
17470, 17470, 17500, 17500, 17531, 17531, 17562, 17562, 17590, 
17590, 17621, 17621, 17651, 17651, 17682, 17682, 17712, 17712, 
17743, 17743, 17774, 17774, 17804, 17804, 17835, 17835, 17865, 
17865, 17896, 17896, 17927, 17927, 17955, 17955, 17986, 17986, 
18016, 18016, 18047, 18047, 18077, 18077, 18108, 18108, 18138, 
18138, 18169, 18169, 18200, 18200, 18229, 18229, 18261, 18261, 
18292, 18292), class = "Date"), E_P = c("Worst", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst", "Best", "Worst", "Best", 
"Worst", "Best", "Worst", "Best", "Worst"), EE.Return = c(NA, 
0.984490106658004, 1.06316765260597, 1.04516976912123, 1.03532384249703, 
0.998659111520543, 0.937023621989288, 0.93812436754379, NA, 0.965897750742823, 
1.038205500003, 1.02003414100013, 0.95422532527494, 0.964910922329705, 
1.0223650081773, 1.0335568291788, 1.03016309486548, NA, 1.00605039609836, 
NA, 1.06267088996325, 1.02421841656192, 1.00581053936684, 1.00922101609326, 
0.996044738749833, 0.983577247783721, 0.998501148846655, 0.986332520983226, 
1.00757243989577, 1.00426300974886, 1.00774150178959, 0.976762960600538, 
0.953379297731325, 0.959888207700722, 0.989833894488411, NA, 
0.927600107795626, 0.955114770191249, 0.983681334623068, 0.95689805747347, 
1.00160081081648, 1.00001948867913, 0.988719788527535, 0.980212208340597, 
0.990677856944698, 0.989527013113452, 1.0728052560901, 1.02838058832053, 
1.05810817084178, 1.01882581646796, 0.973358546597456, 1.00872200728762, 
1.00271015006199, 0.984330608749245, 0.976032224290369, 0.965853021394612, 
0.978475181160887, 0.976798905650469, 1.03521187252397, 1.01409178969761, 
0.997828384895921, 1.01773590892082, 1.03238576703622, 1.00708682195175, 
0.984210801938795, 0.994848780032832, 1.00050847859133, 0.964153470486185, 
1.02317317767083, 1.00056265182786, 1.04196652907647, 1.01271103942702, 
1.06212049666121, 1.00752658698586, 1.02741866552357, 1.0168172129573, 
0.990715930363272, 0.99464014616093, 1.01954485549877, 0.994953793789177, 
0.953682743430435, NA, 1.05205564020111, 1.03836651466202, 1.03962863218754, 
1.01292327554181, 1.04683687706937, 1.0147642007063, 1.03560943016869, 
1.02466130304541, 1.00513887939213, 1.0137272846222, 1.04212015360706, 
NA, 1.01768846606024, 1.01869246014832, 1.04874766720422, 1.03049603112275, 
NA, 0.993281481508836, 1.02128287508366, 0.996379297597258, 1.03304404862138, 
1.02148327995102, 0.985182678714205, 0.993414296925849, 0.977442992343934, 
1.001453563461, 0.992965885224145, 0.982630724856499, 0.979273724765914, 
0.966660791084659, 1.01599267817182, 0.981761767582274, 0.999739064079222, 
0.998823852978845, 1.00568113166286, 0.992311281156995, 1.04276523742109, 
1.02786692762768, 1.05848436925629, 1.04206559385164, 1.04406241090134, 
NA, 0.998203884510645, 1.00781220314641, 1.03833899966613, 1.00908042201138, 
0.947703045688273, 0.981793194585146, 1.04556575401236, 1.02576294818095, 
0.961921624704426, 0.983064371999438, 0.9725845361537, 0.977196268010136, 
1.02473682565254, 1.00579135653163, 1.05745170769188, 1.01447719247106, 
0.985208860623415, NA, 0.968900752764681, 0.978836425337951, 
1.00444986116482, NA, 0.995723189148918, 1.00969418007673, 0.992387280995572, 
NA, 1.02425254811619, 1.00840843913089, NA, 0.969708432269576, 
1.0467735397916, 1.03910419806951, 1.01827513658639, 1.01942347162113, 
1.0089861621101, 0.989879083810066, 1.00354935264972, 1.00175936362551, 
0.989960961551485, 0.999775819401897, 1.0406882357304, 1.02617931446023, 
1.05647892624037, 1.04093423609878, 1.0039285331233, 1.00085171641927, 
1.04567444367327, 1.00138230510903, 1.04347585570423, 1.02369261693479, 
1.01275059169206, 0.997493458590368, 1.00233302406356, NA, 1.01571647464949, 
1.01503616559821, 1.00417338620254, 0.996501783102952, 1.02816967419553, 
0.989849782292618, 1.0137150144442, NA, 0.954588616867265, NA, 
1.00272353461953, 1.00059234343053, 1.00812084061, NA, 1.00313301187102, 
0.994791607971005, 0.982808499837317, NA, 1.01025072847173, NA, 
1.02766078211459, 0.990418179504761, 0.98245504642694, NA, 1.04456774454559, 
1.01073684923739, 0.984979115998173, 0.991589210027554, 0.979578883762636, 
NA, 0.937070096290695, NA, 0.969017843865995, NA, 0.948222599689225, 
0.97058325905426, 1.02461844368629, 1.03520694912392, 1.02988072281571, 
1.01161133280542, 0.986512607872465, 0.9835015523276, 1.05106983381378, 
NA, 0.966504841889842, NA, 1.00985538432253, 0.986180234233817, 
0.98847442377698, 0.997169990298288, 0.977284059186131, 0.963720612427186, 
1.00034052795818, 1.00878673198827, 0.985051108244865, 1.00571756544296, 
1.05446477614142, 1.011638403922, 1.04092956723434, NA, 0.991234132002769, 
1.01950024708603)), class = c("grouped_df", "tbl_df", "tbl", 
"data.frame"), row.names = c(NA, -240L), groups = structure(list(
    Date = structure(c(14640, 14668, 14699, 14729, 14760, 14790, 
    14821, 14852, 14882, 14913, 14943, 14974, 15005, 15033, 15064, 
    15094, 15125, 15155, 15186, 15217, 15247, 15278, 15308, 15339, 
    15370, 15399, 15430, 15460, 15491, 15521, 15552, 15583, 15613, 
    15644, 15674, 15705, 15736, 15764, 15795, 15825, 15856, 15886, 
    15917, 15948, 15978, 16009, 16039, 16070, 16101, 16129, 16160, 
    16190, 16220, 16251, 16282, 16311, 16343, 16374, 16402, 16435, 
    16465, 16493, 16525, 16555, 16584, 16616, 16647, 16678, 16708, 
    16738, 16769, 16800, 16829, 16860, 16891, 16920, 16952, 16982, 
    17011, 17044, 17074, 17105, 17135, 17166, 17197, 17225, 17256, 
    17284, 17317, 17347, 17378, 17409, 17439, 17470, 17500, 17531, 
    17562, 17590, 17621, 17651, 17682, 17712, 17743, 17774, 17804, 
    17835, 17865, 17896, 17927, 17955, 17986, 18016, 18047, 18077, 
    18108, 18138, 18169, 18200, 18229, 18261, 18292), class = "Date"), 
    .rows = list(1L, 2L, 3:4, 5:6, 7:8, 9:10, 11:12, 13:14, 15:16, 
        17:18, 19:20, 21:22, 23:24, 25:26, 27:28, 29:30, 31:32, 
        33:34, 35:36, 37:38, 39:40, 41:42, 43:44, 45:46, 47:48, 
        49:50, 51:52, 53:54, 55:56, 57:58, 59:60, 61:62, 63:64, 
        65:66, 67:68, 69:70, 71:72, 73:74, 75:76, 77:78, 79:80, 
        81:82, 83:84, 85:86, 87:88, 89:90, 91:92, 93:94, 95:96, 
        97:98, 99:100, 101:102, 103:104, 105:106, 107:108, 109:110, 
        111:112, 113:114, 115:116, 117:118, 119:120, 121:122, 
        123:124, 125:126, 127:128, 129:130, 131:132, 133:134, 
        135:136, 137:138, 139:140, 141:142, 143:144, 145:146, 
        147:148, 149:150, 151:152, 153:154, 155:156, 157:158, 
        159:160, 161:162, 163:164, 165:166, 167:168, 169:170, 
        171:172, 173:174, 175:176, 177:178, 179:180, 181:182, 
        183:184, 185:186, 187:188, 189:190, 191:192, 193:194, 
        195:196, 197:198, 199:200, 201:202, 203:204, 205:206, 
        207:208, 209:210, 211:212, 213:214, 215:216, 217:218, 
        219:220, 221:222, 223:224, 225:226, 227:228, 229:230, 
        231:232, 233:234, 235:236, 237:238, 239:240)), row.names = c(NA, 
-121L), class = c("tbl_df", "tbl", "data.frame"), .drop = TRUE))

标签: r

解决方案


我们可以使用pivot_widerfromtidyr重塑为“宽”格式

library(tidyr)
library(dplyr)
df1 %>%        
    pivot_wider(names_from = E_P, values_from = EE.Return)
# A tibble: 121 x 3
# Groups:   Date [121]
#   Date        Worst   Best
#   <date>      <dbl>  <dbl>
# 1 2010-01-31 NA     NA    
# 2 2010-02-28  0.984 NA    
# 3 2010-03-31  1.05   1.06 
# 4 2010-04-30  0.999  1.04 
# 5 2010-05-31  0.938  0.937
# 6 2010-06-30  0.966 NA    
# 7 2010-07-31  1.02   1.04 
# 8 2010-08-31  0.965  0.954
# 9 2010-09-30  1.03   1.02 
#10 2010-10-31 NA      1.03 
# … with 111 more rows

推荐阅读