R中的CSV导入问题

时间:2019-02-20 01:33:45

标签: r csv dataset

导入csv文件后,R读取的每个逗号将我的数据分为几列。 我的问题是,我本来有两列,其中我有不同的值,即浮点数,而另一列是所有这些浮点数的总和< / strong>。因此,R会根据现有逗号的数量,将这些元素分布在5或6列中,有时减少一些列,有时增加一些。

此问题有一个便利之处:第一列与括号分隔:例如,第一行的第一列是(-5,5 + 9)+(-10 + 12),第二列将是这些浮点数的总和。因此,我可以很容易地看到第一列的停止位置,在第二列之后(即第一列的元素之和),至少有 2列或更多空列,以便我可以轻松识别第二列的结尾。现在,我要做的是以原始形式重新排列我的数据集。我发布了数据集的结构以便于理解

enter image description here

这是第一行的代码

   Y= structure(list(V24 = structure(c(66L, 15L, 44L, 28L, 68L, 10L
    ), .Label = c("", "(-0", "(-0+7", "(-1", "(-1+11", "(-1+11)+(-13", 
    "(-1+11)+(-18+18", "(-1+3)+(-10+14)", "(-1+8)", "(-2", "(-2+10", 
    "(-2+10)", "(-2+10)+(-13", "(-2+11", "(-2+11)", "(-2+11)+(-13", 
    "(-2+11)+(-14+17)", "(-2+12", "(-2+12)", "(-2+12)+(-14", "(-2+12)+(-14+15", 
    "(-2+12)+(-14+16)", "(-2+6)+(-8+10)+(-14", "(-2+7", "(-2+7)", 
    "(-2+7)+(-11", "(-2+7)+(-13", "(-2+8", "(-2+8)+(-10", "(-2+8)+(-11", 
    "(-2+8)+(-13", "(-2+8)+(-15", "(-2+9", "(-2+9)", "(-2+9)+(-13", 
    "(-2+9)+(-14", "(-3", "(-3+10", "(-3+10)", "(-3+10)+(-13", "(-3+10)+(-13+14", 
    "(-3+10)+(-14+14", "(-3+11", "(-3+11)", "(-3+11)+(-13", "(-3+12", 
    "(-3+12)", "(-3+12)+(-13", "(-3+13)", "(-3+7", "(-3+8", "(-3+8)", 
    "(-3+8)+(-11+12", "(-3+9", "(-3+9)", "(-4", "(-4+10", "(-4+10)", 
    "(-4+10)+(-11+12)", "(-4+11", "(-4+11)", "(-4+12", "(-4+12)", 
    "(-4+13)", "(-4+14)", "(-4+6)+(-9", "(-4+8", "(-4+8)+(-10+14)", 
    "(-4+9", "(-4+9)+(-10+11)+(-13", "(-4+9)+(-12+13)+(-18+18", "(-4+9)+(-13+14", 
    "(-4+9)+(-14+15)", "(-4+9)+(-9", "(-5", "(-5+10", "(-5+10)", 
    "(-5+10)+(-13", "(-5+11)", "(-5+12)", "(-5+13)+(-14", "(-6", 
    "(1+6)+(-8+9", "S"), class = "factor"), V25 = structure(c(7L, 
    67L, 66L, 58L, 66L, 54L), .Label = c("", "(-4+11", "(-5", "10", 
    "12", "25)+(-14+15)", "25+12", "25+14", "3)", "3+6)", "3+7", 
    "5", "5)", "5)+(-10", "5)+(-11", "5)+(-11+13)+(-14", "5)+(-13", 
    "5)+(-13+13", "5)+(-13+14", "5)+(-14", "5)+(-16", "5)+(-16+16", 
    "5)+(-16+17)+(-21+22", "5)+(-17", "5)+(-18+18", "5+10", "5+10)", 
    "5+10)+(-13", "5+11", "5+11)", "5+11)+(-13", "5+11)+(-17+17", 
    "5+11)+(-21+21", "5+12", "5+12)", "5+12)+(-13", "5+12)+(-20+20", 
    "5+13", "5+13-13", "5+14", "5+15", "5+16", "5+16)", "5+18)", 
    "5+6)+(-14+14", "5+7", "5+7)+(-13", "5+7)+(-15", "5+7)+(-9+12", 
    "5+8", "5+8)", "5+8)+(-17", "5+9", "5+9)", "5+9)+(-13", "5+9)+(-14", 
    "5+9)+(-22", "50)", "50+10)+(-14", "50+14", "50+7", "6", "7", 
    "75)", "75)+(-14+15", "8", "9", "T"), class = "factor"), V26 = structure(c(31L, 
    1L, 1L, 29L, 1L, 29L), .Label = c("", "10", "11", "25)", "25)+(-14+15", 
    "25+15", "4", "5", "5)", "5)+(-13", "5)+(-14", "5)+(-16", "5)+(-16+17)", 
    "5)+(-20+21)", "5+10)+(-13", "5+13", "5+14", "5+14)", "5+14)+(-18+18", 
    "5+15", "5+15)", "5+16)", "5+17", "5+18", "5+18)", "5+23", "50)", 
    "50+16", "6", "7", "75)", "75+14", "75+15", "8", "9"), class = "factor"), 
        V27 = structure(c(9L, 1L, 1L, 9L, 1L, 9L), .Label = c("", 
        "10", "11", "12", "25", "25)", "25+17", "3", "5", "5)", "5+14", 
        "5+15)", "5+15)+(-18", "50)", "6", "7", "75", "75)", "8", 
        "9"), class = "factor"), V28 = structure(c(9L, 12L, 15L, 
        1L, 8L, 1L), .Label = c("", "1", "10", "11", "2", "25)", 
        "3", "4", "5", "5)", "5+19", "6", "7", "75", "8", "9"), class = "factor"), 
        V29 = structure(c(1L, 5L, 10L, 1L, 6L, 1L), .Label = c("", 
        "25", "2prol", "30", "40", "41", "5", "5)", "50", "52", "75", 
        "8", "9"), class = "factor"), V30 = structure(c(1L, 6L, 12L, 
        5L, 7L, 13L), .Label = c("", "25", "3", "3conc", "4", "45", 
        "46", "5", "52", "56", "6", "60", "8", "9"), class = "factor"), 
        V31 = structure(c(15L, 7L, 10L, 3L, 8L, 7L), .Label = c("", 
        "35", "40", "43", "4mot", "5", "52", "53", "54", "55", "56", 
        "57", "60", "63", "7"), class = "factor"), V32 = c(43L, NA, 
        NA, 52L, NA, 57L), V33 = c(45L, NA, NA, 59L, NA, 56L), V34 = c(55L, 
        NA, NA, NA, NA, NA)), row.names = 3:8, class = "data.frame")

所以我的想法是:

  1. 阅读所有列,标识 first second列,并将它们分开:第一列的最后一个元素由右括号突出显示
  2. 处理第一个:我会说“取下一列的值并添加到上一列的前面,并在前面加上逗号”
  3. 处理第二个:由于第二列从右括号后的第一个元素开始,因此我将采用第一个值(在这种情况下,我们有一个整数),或者列中有一个数字(因此该列不为空),将下一个列的编号添加到由逗号链接的前几列中。

注意:我有个主意,但是我不能将这些主意翻译成代码,我该怎么做?

0 个答案:

没有答案