Проблемы с импортом CSV в R - PullRequest
       1

Проблемы с импортом CSV в R

0 голосов
/ 20 февраля 2019

После импорта файла csv R разделял мои данные на столбцы через каждую запятую, которую он читает.Моя проблема в том, что у меня изначально было два столбца , где у меня были разные значения, которые плавающие числа , а другой столбец - это сумма всех этих плавающих чисел ,Поэтому 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. прочитать все столбцы, определить и отделить первый от второго столбца : последний элемент первого столбца выделензакрывающая круглая скобка
  2. Работает над первым : я бы сказал «взять значение следующего столбца и добавить к предыдущему столбцу добавление запятой перед»
  3. Рабочаяна второй : поскольку второй столбец начинается там, где после закрывающей скобки есть первый элемент, я бы взял первое значение (в этом случае у нас есть целое число) или если в следующем столбце есть число (чтобы столбец не был пустым) добавьте номер следующего столбца к первым столбцам, связанным запятой.

Примечание: у меня есть идея, как это сделать, но я не могу перевестиэти идеи в коде, как я могусделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...