首页 > 解决方案 > 在 R 中合并两个数据帧时出现 X.1、X.2、X.3

问题描述

我将 R 中的两个 dfs(“Tokens.Single”和“Tokens.Mixed”)与以下代码合并:

data <- full_join(Tokens.Single, Tokens.Mixed) 

以下是使用 dput 函数的 dfs,以提供更多关于我的 dfs 外观的指示:

> dput(Tokens.Single)
structure(list(Filename = structure(c(6L, 7L, 8L, 9L, 10L, 11L, 
12L, 13L, 14L, 15L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 30L, 31L, 
32L, 33L, 34L, 35L, 36L, 37L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 
1L, 2L, 3L, 4L, 5L, 16L, 17L, 18L, 19L, 27L, 28L, 29L, 38L, 39L, 
40L, 41L), .Label = c("t4_block1_heed1.mp3", "t4_block1_heed2.mp3", 
"t4_block1_heed3.mp3", "t4_block1_heed4.mp3", "t4_block1_heed5.mp3", 
"t4_block1_hoed1.mp3", "t4_block1_hoed2.mp3", "t4_block1_hoed3.mp3", 
"t4_block1_hoed4.mp3", "t4_block1_hoed5.mp3", "t4_block1_whod1.mp3", 
"t4_block1_whod2.mp3", "t4_block1_whod3.mp3", "t4_block1_whod4.mp3", 
"t4_block1_whod5.mp3", "t4_block2_heed1.mp3", "t4_block2_heed2.mp3", 
"t4_block2_heed4.mp3", "t4_block2_heed5.mp3", "t4_block2_hoed1.mp3", 
"t4_block2_hoed3.mp3", "t4_block2_hoed4.mp3", "t4_block2_hoed5.mp3", 
"t4_block2_whod2.mp3", "t4_block2_whod4.mp3", "t4_block2_whod5.mp3", 
"t4_block3_heed1.mp3", "t4_block3_heed4.mp3", "t4_block3_heed5.mp3", 
"t4_block3_hoed1.mp3", "t4_block3_hoed2.mp3", "t4_block3_hoed4.mp3", 
"t4_block3_hoed5.mp3", "t4_block3_whod1.mp3", "t4_block3_whod2.mp3", 
"t4_block3_whod3.mp3", "t4_block3_whod5.mp3", "t4_block4_heed2.mp3", 
"t4_block4_heed3.mp3", "t4_block4_heed4.mp3", "t4_block4_heed5.mp3", 
"t4_block4_hoed1.mp3", "t4_block4_hoed2.mp3", "t4_block4_hoed3.mp3", 
"t4_block4_whod1.mp3", "t4_block4_whod2.mp3", "t4_block4_whod3.mp3", 
"t4_block4_whod5.mp3"), class = "factor"), Talker = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "T4", class = "factor"), 
    Duration = c(497L, 517L, 580L, 563L, 569L, 486L, 506L, 536L, 
    545L, 554L, 516L, 600L, 607L, 577L, 537L, 583L, 544L, 566L, 
    567L, 616L, 652L, 564L, 517L, 612L, 564L, 632L, 662L, 565L, 
    594L, 622L, 552L, 542L, 539L, 554L, 600L, 607L, 577L, 594L, 
    563L, 623L, 602L, 531L, 642L, 624L, 654L, 576L, 556L, 608L
    ), F0 = c(196L, 204L, 204L, 197L, 203L, 216L, 208L, 223L, 
    213L, 219L, 196L, 202L, 205L, 202L, 208L, 205L, 206L, 197L, 
    202L, 195L, 200L, 201L, 210L, 202L, 208L, 195L, 196L, 195L, 
    205L, 208L, 203L, 203L, 212L, 213L, 210L, 206L, 204L, 201L, 
    198L, 199L, 203L, 193L, 195L, 208L, 201L, 195L, 205L, 202L
    ), F1 = c(576L, 553L, 579L, 586L, 601L, 398L, 390L, 398L, 
    389L, 404L, 587L, 560L, 562L, 553L, 393L, 397L, 382L, 553L, 
    592L, 556L, 571L, 387L, 392L, 398L, 400L, 580L, 580L, 554L, 
    403L, 391L, 388L, 393L, 382L, 375L, 384L, 392L, 388L, 387L, 
    393L, 402L, 406L, 388L, 391L, 412L, 410L, 404L, 401L, 420L
    ), F2 = c(1339L, 1381L, 1381L, 1347L, 1394L, 1484L, 1521L, 
    1539L, 1430L, 1454L, 1353L, 1378L, 1325L, 1357L, 1424L, 1563L, 
    1578L, 1350L, 1397L, 1273L, 1319L, 1548L, 1452L, 1499L, 1515L, 
    1358L, 1347L, 1248L, 1575L, 1438L, 1414L, 1548L, 3001L, 2916L, 
    2948L, 2973L, 2947L, 2943L, 2913L, 2987L, 2940L, 3010L, 3008L, 
    2972L, 2963L, 2991L, 3007L, 2989L), F3 = c(2831L, 2779L, 
    2915L, 2875L, 2712L, 2730L, 2793L, 2779L, 2772L, 2692L, 2718L, 
    2856L, 2674L, 2659L, 2717L, 2584L, 2829L, 2726L, 2685L, 2866L, 
    2793L, 2614L, 2636L, 2907L, 2822L, 2932L, 2882L, 2882L, 2650L, 
    2929L, 2809L, 2737L, 3623L, 3607L, 3584L, 3576L, 3680L, 3641L, 
    3590L, 3556L, 3584L, 3640L, 3656L, 3686L, 3516L, 3552L, 3513L, 
    3579L), Word = structure(c(2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 
    3L, 3L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 3L, 3L, 
    3L, 3L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("heed", 
    "hoed", "whod"), class = "factor"), Vowel = structure(c(2L, 
    2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 3L, 3L, 
    3L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 3L, 3L, 3L, 
    3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L), .Label = c("i", "o", "u"), class = "factor"), F1.Mean = c(564L, 
    564L, 564L, 564L, 564L, 394L, 394L, 394L, 394L, 394L, 564L, 
    564L, 564L, 564L, 394L, 394L, 394L, 564L, 564L, 564L, 564L, 
    394L, 394L, 394L, 394L, 564L, 564L, 564L, 394L, 394L, 394L, 
    394L, 398L, 398L, 398L, 398L, 398L, 398L, 398L, 398L, 398L, 
    398L, 398L, 398L, 398L, 398L, 398L, 398L), F2.Mean = c(1328L, 
    1328L, 1328L, 1328L, 1328L, 1496L, 1496L, 1496L, 1496L, 1496L, 
    1328L, 1328L, 1328L, 1328L, 1496L, 1496L, 1496L, 1328L, 1328L, 
    1328L, 1328L, 1496L, 1496L, 1496L, 1496L, 1328L, 1328L, 1328L, 
    1496L, 1496L, 1496L, 1496L, 2969L, 2969L, 2969L, 2969L, 2969L, 
    2969L, 2969L, 2969L, 2969L, 2969L, 2969L, 2969L, 2969L, 2969L, 
    2969L, 2969L), Distance = c(16L, 54L, 55L, 29L, 76L, 13L, 
    25L, 43L, 66L, 43L, 34L, 50L, 4L, 31L, 72L, 67L, 83L, 25L, 
    74L, 56L, 11L, 52L, 44L, 5L, 20L, 34L, 25L, 81L, 80L, 58L, 
    82L, 52L, 36L, 58L, 25L, 7L, 24L, 28L, 56L, 18L, 30L, 42L, 
    40L, 14L, 13L, 23L, 38L, 30L)), class = "data.frame", row.names = c(NA, 
-48L))
> dput(Tokens.Mixed)
structure(list(Filename = structure(c(1L, 2L, 3L, 4L, 5L, 5L, 
6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 
19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 
32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 
45L, 46L, 47L), .Label = c("t1_block1_hoed3", "t1_block1_hoed5", 
"t1_block2_hoed3", "t1_block2_whod1", "t1_block2_whod5", "t1_block3_heed2", 
"t1_block3_heed3", "t1_block3_heed5", "t1_block3_hoed2", "t1_block3_whod3", 
"t1_block4_heed1", "t2_block1_heed3", "t2_block1_heed4", "t2_block1_hoed3", 
"t2_block1_whod1", "t2_block1_whod4", "t2_block2_hoed3", "t2_block2_hoed4", 
"t2_block2_hoed5", "t2_block3_whod1", "t2_block4_heed2", "t2_block4_heed5", 
"t2_block4_whod2", "t3_block1_heed1", "t3_block1_whod5", "t3_block2_heed5", 
"t3_block2_whod5", "t3_block3_hoed1", "t3_block3_hoed4", "t3_block3_whod4", 
"t3_block4_heed1", "t3_block4_heed3", "t3_block4_hoed3", "t3_block4_hoed4", 
"t3_block4_whod5", "t4_block1_heed5", "t4_block1_hoed1", "t4_block1_hoed2", 
"t4_block1_whod4", "t4_block2_hoed2", "t4_block2_whod5", "t4_block3_heed2", 
"t4_block3_heed3", "t4_block3_whod1", "t4_block3_whod3", "t4_block4_heed1", 
"t4_block4_hoed2"), class = "factor"), Talker = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("T1", 
"T2", "T3", "T4"), class = "factor"), Duration = c(468L, 532L, 
537L, 492L, 427L, 427L, 510L, 482L, 545L, 504L, 499L, 511L, 584L, 
641L, 510L, 582L, 590L, 523L, 572L, 609L, 641L, 558L, 488L, 519L, 
555L, 402L, 538L, 520L, 470L, 515L, 407L, 509L, 483L, 474L, 460L, 
432L, 577L, 497L, 517L, 545L, 574L, 544L, 597L, 627L, 564L, 612L, 
661L, 662L), F0 = c(232L, 239L, 221L, 256L, 233L, 233L, 230L, 
239L, 235L, 214L, 221L, 238L, 210L, 210L, 219L, 233L, 230L, 223L, 
239L, 223L, 238L, 219L, 224L, 243L, 203L, 208L, 200L, 217L, 199L, 
207L, 212L, 202L, 199L, 194L, 192L, 197L, 204L, 196L, 204L, 213L, 
202L, 206L, 203L, 194L, 201L, 202L, 196L, 196L), F1 = c(628L, 
670L, 640L, 489L, 461L, 461L, 448L, 360L, 324L, 619L, 417L, 383L, 
357L, 356L, 602L, 336L, 348L, 586L, 685L, 654L, 306L, 293L, 291L, 
288L, 422L, 415L, 420L, 414L, 571L, 581L, 428L, 409L, 420L, 569L, 
587L, 433L, 388L, 576L, 553L, 389L, 543L, 382L, 409L, 406L, 387L, 
398L, 403L, 580L), F2 = c(1076L, 1547L, 1304L, 1234L, 1511L, 
1511L, 2837L, 2559L, 2884L, 1205L, 1108L, 2500L, 2803L, 2839L, 
1293L, 968L, 1262L, 1315L, 1260L, 1186L, 1190L, 2780L, 2723L, 
1204L, 2779L, 1855L, 2718L, 1643L, 1348L, 1392L, 2176L, 2609L, 
2684L, 1486L, 1459L, 2118L, 2947L, 1339L, 1381L, 1430L, 1215L, 
1578L, 3099L, 3036L, 1548L, 1499L, 3058L, 1347L), F3 = c(2521L, 
2606L, 2735L, 2772L, 3550L, 3550L, 3226L, 3126L, 3315L, 2922L, 
2874L, 3114L, 3997L, 3877L, 2786L, 2695L, 2725L, 2848L, 2778L, 
2880L, 2891L, 3867L, 3722L, 2882L, 3464L, 3227L, 3269L, 2804L, 
2754L, 2861L, 2973L, 3351L, 3426L, 2900L, 2755L, 2980L, 3680L, 
2831L, 2779L, 2772L, 2930L, 2829L, 3627L, 3619L, 2614L, 2907L, 
3642L, 2882L), Word = structure(c(2L, 2L, 2L, 3L, 3L, 3L, 1L, 
1L, 1L, 2L, 3L, 1L, 1L, 1L, 2L, 3L, 3L, 2L, 2L, 2L, 3L, 1L, 1L, 
3L, 1L, 3L, 1L, 3L, 2L, 2L, 3L, 1L, 1L, 2L, 2L, 3L, 1L, 2L, 2L, 
3L, 2L, 3L, 1L, 1L, 3L, 3L, 1L, 2L), .Label = c("heed", "hoed", 
"whod"), class = "factor"), Vowel = structure(c(2L, 2L, 2L, 3L, 
3L, 3L, 1L, 1L, 1L, 2L, 3L, 1L, 1L, 1L, 2L, 3L, 3L, 2L, 2L, 2L, 
3L, 1L, 1L, 3L, 1L, 3L, 1L, 3L, 2L, 2L, 3L, 1L, 1L, 2L, 2L, 3L, 
1L, 2L, 2L, 3L, 2L, 3L, 1L, 1L, 3L, 3L, 1L, 2L), .Label = c("i", 
"o", "u"), class = "factor"), F1.Mean = c(639.25, 639.25, 639.25, 
457, 457, 457, 378.75, 378.75, 378.75, 639.25, 457, 378.75, 324.25, 
324.25, 631.75, 319.5, 319.5, 631.75, 631.75, 631.75, 319.5, 
324.25, 324.25, 319.5, 417.75, 422.5, 417.75, 422.5, 577, 577, 
422.5, 417.75, 417.75, 577, 577, 422.5, 401.5, 563, 563, 389, 
563, 389, 401.5, 401.5, 389, 389, 401.5, 563), F2.Mean = c(1283, 
1283, 1283, 1341, 1341, 1341, 2695, 2695, 2695, 1283, 1341, 2695, 
2786.25, 2786.25, 1263.5, 1156, 1156, 1263.5, 1263.5, 1263.5, 
1156, 2786.25, 2786.25, 1156, 2697.5, 1948, 2697.5, 1948, 1421.25, 
1421.25, 1948, 2697.5, 2697.5, 1421.25, 1421.25, 1948, 3035, 
1320.5, 1320.5, 1513.75, 1320.5, 1513.75, 3035, 3035, 1513.75, 
1513.75, 3035, 1320.5), Distance = c(207, 266, 21, 112, 170, 
170, 158, 137, 197, 81, 236, 195, 37, 62, 42, 189, 110, 69, 53, 
81, 37, 32, 71, 57, 82, 93, 21, 305, 73, 30, 228, 89, 14, 65, 
39, 170, 89, 23, 61, 84, 107, 65, 64, 5, 34, 17, 23, 31), F1.erb = c(25.450244282939, 
27.1523306840273, 25.9365546832499, 19.8171488126706, 18.6824245452785, 
18.6824245452785, 18.1555882782749, 14.5893120093281, 13.1303808083953, 
25.0855114827058, 16.899286410805, 15.5214069432574, 14.4677344092503, 
14.4272085425578, 24.396571748932, 13.6166912087062, 14.1030016090171, 
23.7481578818507, 27.7602186844159, 26.503916816946, 12.4009152079289, 
11.8740789409254, 11.7930272075402, 11.6714496074625, 17.1019157442679, 
16.8182346774199, 17.0208640108828, 16.7777088107273, 23.140269881462, 
23.5455285483878, 17.3450709444234, 16.5750794772644, 17.0208640108828, 
23.0592181480769, 23.7886837485433, 17.5477002778863, 15.7240362767203, 
23.3428992149249, 22.4108042809956, 15.7645621434128, 22.0055456140699, 
15.4808810765648, 16.5750794772644, 16.4535018771867, 15.6835104100277, 
16.129294943646, 16.3319242771089, 23.5050026816952), F2.erb = c(43.6058325612139, 
62.6935157734182, 52.8457301671217, 50.0089194986413, 61.2345845724854, 
61.2345845724854, 114.971883806844, 103.705692866307, 116.876599541395, 
48.8336693645565, 44.9026602953764, 101.314666731445, 113.594004339296, 
115.052935540229, 52.3999456335034, 39.2290389584155, 51.1436437660334, 
53.2915147007401, 51.0625920326483, 48.0636778973975, 48.2257813641678, 
112.661909405367, 110.35193500389, 48.7931434978639, 112.621383538674, 
75.1754827147322, 110.149305670427, 66.5839989759057, 54.6288683015952, 
56.4120064360686, 88.1842859230497, 105.731986200936, 108.771426202879, 
60.2214379051709, 59.1272395044713, 85.8337856548802, 119.429729143027, 
54.264135501362, 55.9662219024502, 57.9519893703866, 49.2389280314823, 
63.9498176408881, 125.589660880299, 123.036531278667, 62.7340416401108, 
60.7482741721744, 123.928100345904, 54.5883424349026)), row.names = c(NA, 
-48L), class = c("grouped_df", "tbl_df", "tbl", "data.frame"), groups = structure(list(
    Talker = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 
    4L, 4L, 4L), .Label = c("T1", "T2", "T3", "T4"), class = "factor"), 
    Vowel = structure(c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 
    2L, 3L), .Label = c("i", "o", "u"), class = "factor"), .rows = list(
        c(7L, 8L, 9L, 12L), c(1L, 2L, 3L, 10L), c(4L, 5L, 6L, 
        11L), c(13L, 14L, 22L, 23L), c(15L, 18L, 19L, 20L), c(16L, 
        17L, 21L, 24L), c(25L, 27L, 32L, 33L), c(29L, 30L, 34L, 
        35L), c(26L, 28L, 31L, 36L), c(37L, 43L, 44L, 47L), c(38L, 
        39L, 41L, 48L), c(40L, 42L, 45L, 46L))), row.names = c(NA, 
-12L), class = c("tbl_df", "tbl", "data.frame"), .drop = TRUE))

当我这样做时,我的新 df“数据”中出现了三列,分别称为“X.1”、“X.2”和“X.3”。任何有关为什么会发生这种情况的见解都值得赞赏!

标签: r

解决方案


如果您需要更好的帮助,您应该创建一个最小的可重现示例(reprex)。但是,这是 R 的 data.frame 结构的常见行为。当你的列名不遵守 R 中如何命名变量的规则时,data.frame 总是放置这个 X。所以可能是您的一张表中的名称,不遵守这些规则。如果您想避免这种行为,您可以将两个表都转换为 Tibble 的,with。Tibbles 保留您的列的名称,即使它们不遵守我提到的那些规则,但您必须在列名周围加上 backsticks 才能引用它:

library(tidyverse)

table1 <- as_tibble(table1)
table2 <- as_tibble(table2)

table1$`column name that dont respect rules`

但我认为更好的选择是重命名那些不符合这些规则的列。


推荐阅读