有没有类似 unnest_longer() 的函数?我正在尝试运行以下代码行,但在尝试取消嵌套时不断发生错误。
df %>%
filter(n() > 2L, .by = sn2) %>%
pivot_wider(names_from = sn3, values_from = leisure:hyear,
values_fn = list) %>%
unnest_longer(leisure_1:hyear_2, keep_empty = TRUE)
unnest_longer()
中的错误:
!在第 9 行中,无法将大小 4 的输入回收到大小 2。
所需输出:
sn2 | 休闲.1 | h月.1 | hyear.1 | 休闲.2 | h月.2 | hyear.2 |
---|---|---|---|---|---|---|
227 | 230 | 6 | 2000 | 540 | 6 | 2000 |
227 | 130 | 6 | 2000 | 170 | 6 | 2000 |
250 | 370 | 6 | 2000 | 380 | 6 | 2000 |
250 | 380 | 6 | 2000 | 190 | 6 | 2000 |
294 | 120 | 6 | 2000 | 210 | 6 | 2000 |
294 | 200 | 6 | 2000 | 310 | 6 | 2000 |
307 | 130 | 7 | 2000 | 220 | 7 | 2000 |
307 | 480 | 7 | 2000 | 270 | 7 | 2000 |
数据:
dput(df)
structure(list(sn2 = structure(c(227, 227, 227, 227, 249, 249,
250, 250, 250, 250, 294, 294, 294, 294, 307, 307, 307, 307, 318,
318, 341, 341, 352, 352, 352, 352, 363, 363, 385, 385, 385, 385,
409, 409, 455, 455, 455, 455, 535, 535, 535, 535, 568, 568, 580,
580, 591, 591, 591, 591, 661, 661, 683, 683, 718, 718, 741, 741,
741, 741, 763, 763, 763, 763, 809, 809, 809, 809, 26, 26, 26,
26, 37, 37, 37, 37, 93, 93, 117, 117, 117, 139, 139, 151, 151,
162, 162, 162, 162, 210, 210, 210, 210, 221, 221, 221, 221, 254,
254, 254, 254, 265, 265, 265, 265, 301, 301, 301, 301, 345, 345,
356, 356, 356, 356, 390, 390, 390, 390, 517, 517, 562, 562, 573,
573, 573, 573, 595, 595, 595, 595, 610, 610, 621, 621, 621, 621,
632, 632, 643, 643, 712, 712, 712, 712, 723, 723, 723, 723, 745,
745, 745, 745, 789, 789, 19, 19, 19, 19, 20, 20, 20, 20, 42,
42, 75, 75, 86, 86, 86, 86, 100, 100, 100, 100, 155, 155, 155,
155, 166, 166, 166, 166, 214, 214, 225, 225, 225, 225, 247, 247,
247, 247, 258, 258, 281, 281, 316, 316, 316, 316, 327, 327, 338,
338, 361, 361, 383, 383, 394, 394, 394, 394, 422, 422, 422, 422,
433, 433, 433, 433, 444, 444, 444, 444, 466, 466, 499, 499, 499,
499, 524, 524, 524, 524, 568, 568, 568, 568, 580, 580, 580, 580,
591, 591, 591, 591, 649, 649, 649, 649, 672, 672, 672, 672, 683,
683, 683, 683, 707, 707, 707, 707, 730, 730, 730, 730, 741, 741,
741, 741, 785, 785, 785, 785, 809, 809, 809, 809, 59, 59, 59,
59, 82, 82, 82, 82, 106, 106, 106, 106, 117, 117, 117, 117, 128,
128, 151, 151, 151, 151, 162, 162, 162, 162, 173, 173, 173, 173,
184, 184, 184, 184, 221, 221, 232, 232, 232, 232, 254, 254, 254,
254, 265, 265, 276, 276, 298, 298, 298, 298, 345, 345, 345, 345,
367, 367, 367, 367, 389, 389, 389, 389, 528, 528, 528, 528, 539,
539, 539, 539, 551, 551, 584, 584), label = "household number", format.stata = "%8.0g"),
sn3 = structure(c(1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 2,
2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2,
1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1,
1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1,
2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2,
1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2,
2, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2,
1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1,
1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1,
1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1,
1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1,
1, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1,
2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1,
1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2,
1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1,
1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1,
2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1,
1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1), label = "person number", format.stata = "%8.0g"),
dml1_5 = structure(c(70, 30, 170, 30, 180, 250, 230, 210,
170, 30, 80, 110, 10, 40, 30, 420, 20, 270, 170, 160, 60,
70, 90, 10, 380, 20, 360, 170, 70, 120, 190, 110, 60, 230,
0, 0, 0, 130, 10, 70, 590, 160, 220, 260, 140, 30, 0, 0,
0, 0, 70, 110, 60, 0, 70, 290, 80, 0, 70, 140, 140, 150,
360, 380, 20, 90, 30, 30, 40, 100, 110, 110, 70, 100, 0,
70, 110, 70, 50, 170, 0, 610, 240, 160, 250, 70, 170, 70,
200, 0, 0, 20, 60, 150, 10, 10, 30, 250, 230, 150, 0, 90,
100, 0, 10, 270, 0, 330, 60, 0, 40, 0, 0, 50, 30, 0, 10,
60, 30, 0, 30, 70, 230, 0, 0, 0, 0, 150, 0, 420, 140, 50,
140, 40, 70, 10, 30, 0, 360, 50, 660, 180, 190, 100, 120,
110, 160, 110, 210, 40, 30, 0, 90, 10, 0, 170, 0, 310, 10,
270, 30, 270, 40, 10, 0, 80, 90, 0, 80, 60, 70, 250, 250,
80, 170, 60, 220, 210, 240, 0, 0, 110, 0, 330, 30, 40, 10,
60, 0, 90, 50, 130, 140, 90, 170, 60, 290, 80, 0, 0, 0, 180,
60, 0, 40, 0, 130, 110, 130, 0, 0, 40, 80, 0, 0, 10, 0, 80,
210, 100, 90, 30, 70, 60, 30, 60, 10, 0, 20, 10, 10, 0, 0,
0, 170, 220, 50, 40, 0, 0, 180, 30, 350, 90, 30, 90, 0, 0,
110, 0, 0, 30, 0, 0, 0, 270, 80, 430, 10, 130, 100, 0, 20,
130, 60, 0, 400, 50, 0, 10, 70, 120, 220, 160, 240, 70, 0,
120, 0, 0, 300, 70, 210, 20, 0, 0, 0, 210, 20, 60, 0, 30,
300, 0, 0, 40, 140, 0, 40, 0, 80, 40, 0, 0, 0, 60, 310, 60,
350, 190, 0, 40, 60, 60, 70, 30, 0, 180, 30, 100, 30, 80,
40, 30, 70, 0, 140, 20, 10, 50, 0, 230, 120, 90, 150, 30,
280, 10, 310, 0, 10, 0, 0, 90, 0, 300, 0, 0, 0, 0, 130, 20,
70, 180, 30), label = "main activity - social life & entertainment (mins per day)", format.stata = "%8.0g"),
dml1_6 = structure(c(0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0,
0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 370, 0, 0, 0, 160,
0, 100, 0, 0, 190, 0, 130, 0, 200, 0, 0, 30, 0, 0, 20, 0,
0, 0, 0, 0, 0, 0, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 70, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 60, 0, 0, 0, 0,
50, 140, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,
40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 30, 50, 0, 60, 0, 0, 0, 0, 60, 0, 0, 60,
0, 70, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,
0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 150, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 80, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 540, 100, 0,
90, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0,
0, 0, 0, 180, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0), label = "main activity - sports & outdoor activities (mins per day)", format.stata = "%8.0g"),
dml1_7 = structure(c(0, 0, 0, 0, 210, 0, 0, 0, 0, 0, 0, 0,
0, 20, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 130,
0, 0, 0, 0, 0, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 90, 0, 0, 0, 0, 20, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0,
0, 20, 0, 0, 230, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 170, 10,
10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 30, 0, 0, 0,
0, 0, 0, 0, 20, 0, 0, 30, 30, 0, 0, 30, 0, 0, 0, 0, 30, 30,
20, 0, 0, 180, 0, 240, 0, 0, 180, 0, 0, 180, 30, 40, 20,
20, 0, 10, 40, 0, 0, 190, 180, 150, 30, 60, 0, 0, 0, 20,
10, 0, 10, 0, 0, 120, 70, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 20, 0, 80,
0, 0, 0, 60, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 10, 10, 110, 110, 120, 10, 120, 70, 50, 0, 0, 0, 0,
10, 10, 0, 0, 90, 190, 0, 10, 0, 0, 0, 0, 0, 0, 0, 120, 10,
420, 250, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 10, 0, 40, 0, 0, 40, 60, 0, 0, 0, 0, 0, 60, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 140, 0, 0,
140, 0, 170, 790, 0, 0, 0, 0, 0, 0, 60, 30, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 50, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 330, 40), label = "main activity - hobbies & games (mins per day)", format.stata = "%8.0g"),
dml1_8 = structure(c(160, 100, 370, 140, 40, 230, 140, 170,
210, 130, 40, 90, 200, 250, 100, 60, 200, 0, 170, 60, 10,
250, 80, 130, 240, 0, 150, 290, 70, 40, 70, 0, 20, 0, 370,
230, 350, 0, 150, 50, 50, 240, 270, 460, 150, 180, 50, 60,
10, 20, 300, 270, 120, 80, 170, 60, 10, 40, 60, 20, 140,
90, 260, 0, 260, 100, 140, 40, 20, 120, 100, 240, 10, 300,
220, 140, 220, 140, 10, 100, 250, 130, 150, 280, 170, 320,
240, 190, 180, 80, 100, 90, 100, 40, 170, 30, 270, 210, 0,
150, 120, 130, 260, 140, 340, 120, 170, 50, 320, 110, 110,
250, 230, 370, 180, 120, 80, 130, 190, 420, 500, 30, 10,
110, 310, 0, 230, 500, 80, 180, 240, 350, 140, 80, 100, 330,
360, 100, 150, 150, 100, 100, 70, 270, 270, 130, 140, 80,
230, 150, 200, 270, 620, 80, 10, 250, 210, 150, 420, 0, 120,
0, 290, 230, 340, 150, 60, 180, 230, 170, 180, 200, 10, 510,
250, 30, 0, 240, 80, 0, 0, 120, 100, 0, 0, 310, 230, 320,
200, 390, 410, 310, 320, 170, 220, 140, 90, 0, 160, 0, 150,
280, 180, 370, 310, 130, 90, 380, 300, 210, 280, 200, 70,
0, 60, 160, 230, 50, 120, 150, 120, 120, 150, 170, 400, 310,
470, 80, 70, 280, 170, 400, 480, 560, 510, 10, 50, 80, 90,
190, 250, 160, 110, 80, 90, 20, 10, 90, 140, 140, 50, 90,
70, 170, 140, 80, 180, 80, 210, 150, 220, 280, 140, 0, 210,
250, 0, 0, 560, 170, 150, 0, 0, 0, 0, 0, 0, 150, 0, 90, 30,
160, 30, 50, 160, 180, 130, 330, 140, 670, 250, 100, 240,
180, 40, 140, 290, 150, 320, 90, 350, 30, 80, 260, 240, 120,
180, 280, 300, 0, 100, 80, 30, 220, 330, 170, 20, 170, 50,
250, 110, 260, 110, 130, 310, 100, 160, 230, 150, 230, 130,
330, 160, 290, 280, 240, 190, 160, 180, 270, 410, 250, 260,
250, 420, 60, 0, 150, 200, 140, 170, 190, 170, 120, 480), label = "main activity - mass media (mins per day)", format.stata = "%8.0g"),
hmonth = structure(c(6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9, 9, 9, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 11, 11, 11, 11, 5,
5, 5, 5, 7, 7, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 7, 7, 10, 10, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 9, 9, 10, 10, 10, 10, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 11, 11, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8,
8, 9, 9, 9, 9, 8, 8, 8, 8, 10, 10, 10, 10, 8, 8, 8, 8, 9,
9, 9, 9, 11, 11, 11, 11, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10,
9, 9, 9, 9, 10, 10, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 10,
10, 10, 10), label = "month of household interview", format.stata = "%8.0g", labels = c(january = 1,
february = 2, march = 3, april = 4, may = 5, june = 6, july = 7,
august = 8, september = 9, october = 10, november = 11, december = 12
), class = c("haven_labelled", "vctrs_vctr", "double")),
hyear = structure(c(2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2001, 2001,
2001, 2001, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2001, 2001,
2001, 2001, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000,
2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000), label = "year of household interview", format.stata = "%8.0g"),
leisure = c(230, 130, 540, 170, 430, 480, 370, 380, 380,
190, 120, 200, 210, 310, 130, 480, 220, 270, 340, 260, 90,
320, 170, 140, 620, 390, 510, 460, 140, 450, 260, 210, 80,
230, 560, 620, 480, 130, 360, 120, 640, 430, 490, 720, 310,
210, 50, 60, 10, 20, 460, 380, 270, 170, 240, 370, 90, 40,
130, 160, 300, 240, 620, 380, 280, 190, 170, 70, 150, 220,
210, 580, 110, 400, 300, 210, 330, 210, 60, 270, 250, 740,
560, 450, 430, 430, 410, 260, 380, 80, 100, 110, 160, 190,
180, 70, 310, 520, 260, 300, 120, 220, 410, 280, 400, 390,
190, 380, 380, 140, 180, 250, 230, 450, 210, 120, 90, 190,
250, 530, 590, 100, 240, 290, 310, 240, 230, 650, 260, 600,
380, 580, 310, 160, 190, 360, 390, 110, 550, 200, 760, 470,
440, 520, 420, 330, 350, 190, 500, 210, 240, 270, 720, 150,
10, 540, 340, 530, 500, 270, 150, 270, 330, 250, 340, 230,
150, 180, 310, 230, 250, 450, 260, 590, 420, 100, 220, 450,
320, 0, 0, 230, 100, 350, 120, 430, 240, 380, 200, 540, 460,
440, 480, 260, 390, 200, 380, 80, 160, 0, 150, 460, 240,
370, 350, 130, 220, 500, 440, 320, 390, 360, 160, 180, 130,
270, 230, 130, 330, 250, 220, 160, 220, 230, 590, 560, 480,
90, 90, 440, 180, 400, 480, 560, 680, 350, 110, 540, 340,
190, 430, 190, 460, 280, 140, 110, 90, 90, 250, 140, 50,
120, 70, 170, 140, 350, 260, 510, 230, 280, 360, 280, 160,
400, 870, 350, 400, 140, 560, 180, 280, 150, 220, 160, 240,
70, 0, 270, 0, 90, 330, 230, 310, 70, 160, 180, 130, 580,
480, 730, 430, 270, 540, 350, 830, 180, 430, 150, 360, 90,
430, 130, 110, 260, 240, 180, 490, 340, 650, 190, 100, 120,
90, 280, 400, 200, 20, 350, 80, 350, 210, 340, 150, 160,
380, 100, 470, 250, 160, 280, 130, 560, 280, 430, 440, 270,
470, 170, 490, 270, 420, 250, 260, 340, 420, 360, 0, 150,
260, 140, 300, 210, 240, 630, 550)), row.names = c(NA, -355L
), class = c("tbl_df", "tbl", "data.frame"), na.action = structure(c(`3492` = 3492L,
`3493` = 3493L, `3494` = 3494L, `3495` = 3495L, `3496` = 3496L,
`3497` = 3497L, `3498` = 3498L, `3499` = 3499L, `3500` = 3500L,
`3501` = 3501L, `3508` = 3508L, `3509` = 3509L, `3510` = 3510L,
`3511` = 3511L, `3512` = 3512L, `3513` = 3513L, `3518` = 3518L,
`3519` = 3519L, `3520` = 3520L, `3521` = 3521L, `3522` = 3522L,
`3523` = 3523L, `3524` = 3524L, `3525` = 3525L), class = "omit"))
使用上面的数据集,添加
keep_empty = TRUE
可以让我解除所有行的嵌套:
library(tidyverse)
df %>%
pivot_wider(names_from = sn3, values_from = leisure:hyear,
values_fn = list) %>%
unnest_longer(leisure_1:hyear_2, keep_empty = TRUE)
#> # A tibble: 353 × 10
#> sn2 dml1_5 dml1_6 dml1_7 dml1_8 hmonth leisure_1 leisure_2 hyear_1 hyear_2
#> <dbl> <dbl> <dbl> <dbl> <dbl> <hvn_l> <dbl> <dbl> <dbl> <dbl>
#> 1 227 70 0 0 160 6 230 NA 2000 NA
#> 2 227 30 0 0 100 6 130 NA 2000 NA
#> 3 227 170 0 0 370 6 NA 540 NA 2000
#> 4 227 30 0 0 140 6 NA 170 NA 2000
#> 5 249 180 0 210 40 6 430 NA 2000 NA
#> 6 249 250 0 0 230 6 480 NA 2000 NA
#> 7 250 230 0 0 140 6 370 NA 2000 NA
#> 8 250 210 0 0 170 6 380 NA 2000 NA
#> 9 250 170 0 0 210 6 NA 380 NA 2000
#> 10 250 30 30 0 130 6 NA 190 NA 2000
#> # ℹ 343 more rows