Импорт файла фиксированной ширины в R, когда переменные определены в другом файле

Ну, это похоже на бесконечную рекурсию. A Person имеют много Cars. Car имеют один владелец, который является Person.

Просто предложение:

Когда вы возвращаете свою сущность, Spring ожидает наличия Person (владельца) внутри вашей структуры Car JSON и списка Car внутри вашего Person. Это может быть проблемой, если вы хотите получить данные, поскольку она создаст бесконечную рекурсию. Вам нужно добавить тип fetch для LAZY, чтобы предотвратить эту рекурсию.

@OneToMany(mappedBy="owner", cascade=CascadeType.ALL, fetch = FetchType.LAZY)

Теперь, для вашего вопроса, как я уже сказал, ваш Car должен иметь Person ], но в вашем запросе вы не укажете Person (владелец), поэтому Spring не знает, кто является владельцем. Это основная проблема.

Я предлагаю вам обновить их отдельно:

@PutMapping("/people/{id}")
public ResponseEntity <?>handleUpdate(@PathVariable("id") Long personId, @RequestBody Person person) {
    Optional <Person> personOptional = personRepository.findById(personId);

    if (personOptional.isPresent()) {
        Person owner = personOptional.get();

        for (Car car: person.getCars()) {
            car.setOwner(owner);
        }

        carRepository.saveAll(person.getCars());

        person.setCars(null);
        person.setId(personId);
        personRepository.save(person);
    }

    return...;
}

В этом примере я обновляю их отдельно, но одним методом. Конечно, вам нужно будет автоувеличивать как PersonRepository, так и CarRepository

UPDATE:

. Если вы не обходитесь каким-то образом, вам нужно будет запросить JSON структура выглядит следующим образом:

{
  "id": 1,
  "name": "Joe",
  "cars": [
    {
      "car_id": 1,
      "color": "red",
      "owner" : 
      {
        "id": "1"
      }
    },
    {
      "car_id": 2,
      "color": "blue",
      "owner" : 
      {
        "id": "1"
      }
    }
  ]
}
0
задан Khaynes 19 January 2019 в 12:41
поделиться

2 ответа

Хотя я не могу ответить на ваш вопрос полностью, я могу начать вас. Причина, по которой вы не знаете, что делать, заключается в том, что данные не формируются так, как вы привыкли. Данные представлены в формате ASCII. Вот что говорится на веб-сайте:

«Примечание. Для преобразования ASCII в наборы данных SAS и SPSS необходимо использовать программы SAS и SPSS. Как использовать данные ASCII, варьируется от одного программного пакета к другому. обычно необходимо указывать переменную. Положение столбцов для каждой переменной можно найти в документации для данных за каждый год. Для получения дополнительной информации обратитесь к документации по программному обеспечению. "

ASCII - это просто другой способ хранения данных, например, .csv или другой формат, но он не так удобен для чтения, как все в столбцах. Вы можете начать, но искать, как импортировать данные ASCII в R и перейти оттуда. Извините, я могу помочь вам.

0
ответ дан benso8 19 January 2019 в 12:41
поделиться

Для считывания данных вы можете использовать базовый метод read.fwf.

Как упоминалось в комментарии, вы можете получить соответствие из синтаксиса SPSS: https://www.cdc.gov/healthyyouth/data/yrbs/sadc_2017/2017_sadc_spss_input_program.sps

[ 118] Я использовал текстовый редактор для быстрого получения ширины столбца:

vec <- c(5, 50, 50, 8, 8, 3, 10, 8, 8, 8, 3, 3, 3, 3, 3, 8, 8, 8, 8, 
3, 3, 1, 1, 8, 8, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3)

Соответствующие имена каждого столбца / переменной:

names <- c("sitecode", "sitename", "sitetype", "sitetypenum", "year", 
"survyear", "weight", "stratum", "PSU", "record", "age", "sex", 
"grade", "race4", "race7", "stheight", "stweight", "bmi", "bmipct", 
"qnobese", "qnowt", "q67", "q66", "sexid", "sexid2", "sexpart", 
"sexpart2", "Q8", "Q9", "Q10", "Q11", "Q12", "Q13", "Q14", "Q15", 
"Q16", "Q17", "Q18", "Q19", "Q20", "Q21", "Q22", "Q23", "Q24", 
"Q25", "Q26", "Q27", "Q28", "Q29", "Q30", "Q31", "Q32", "Q33", 
"Q34", "Q35", "Q36", "Q37", "Q38", "Q39", "Q40", "Q41", "Q42", 
"Q43", "Q44", "Q45", "Q46", "Q47", "Q48", "Q49", "Q50", "Q51", 
"Q52", "Q53", "Q54", "Q55", "Q56", "Q57", "Q58", "Q59", "Q60", 
"Q61", "Q62", "Q63", "Q64", "Q65", "Q68", "Q69", "Q70", "Q71", 
"Q72", "Q73", "Q74", "Q75", "Q76", "Q77", "Q78", "Q79", "Q80", 
"Q81", "Q82", "Q83", "Q84", "Q85", "Q86", "Q87", "Q88", "Q89", 
"QN8", "QN9", "QN10", "QN11", "QN12", "QN13", "QN14", "QN15", 
"QN16", "QN17", "QN18", "QN19", "QN20", "QN21", "QN22", "QN23", 
"QN24", "QN25", "QN26", "QN27", "QN28", "QN29", "QN30", "QN31", 
"QN32", "QN33", "QN34", "QN35", "QN36", "QN37", "QN38", "QN39", 
"QN40", "QN41", "QN42", "QN43", "QN44", "QN45", "QN46", "QN47", 
"QN48", "QN49", "QN50", "QN51", "QN52", "QN53", "QN54", "QN55", 
"QN56", "QN57", "QN58", "QN59", "QN60", "QN61", "QN62", "QN63", 
"QN64", "QN65", "QN68", "QN69", "QN70", "QN71", "QN72", "QN73", 
"QN74", "QN75", "QN76", "QN77", "QN78", "QN79", "QN80", "QN81", 
"QN82", "QN83", "QN84", "QN85", "QN86", "QN87", "QN88", "QN89", 
"qnfrcig", "qndaycig", "qnfrevp", "qndayevp", "qnfrskl", "qndayskl", 
"qnfrcgr", "qndaycgr", "qntb2", "qntb3", "qntb4", "qniudimp", 
"qnshparg", "qnothhpl", "qndualbc", "qnbcnone", "qnfr0", "qnfr1", 
"qnfr2", "qnfr3", "qnveg0", "qnveg1", "qnveg2", "qnveg3", "qnsoda1", 
"qnsoda2", "qnsoda3", "qnmilk1", "qnmilk2", "qnmilk3", "qnbk7day", 
"qnpa0day", "qnpa7day", "qndlype", "qnnodnt", "qbikehelmet", 
"qdrivemarijuana", "qcelldriving", "qpropertydamage", "qbullyweight", 
"qbullygender", "qbullygay", "qchokeself", "qcigschool", "qchewtobschool", 
"qalcoholschool", "qtypealcohol", "qhowmarijuana", "qmarijuanaschool", 
"qcurrentcocaine", "qcurrentheroin", "qcurrentmeth", "qhallucdrug", 
"qprescription30d", "qgenderexp", "qtaughtHIV", "qtaughtsexed", 
"qtaughtstd", "qtaughtcondom", "qtaughtbc", "qdietpop", "qcoffeetea", 
"qsportsdrink", "qenergydrink", "qsugardrink", "qwater", "qfastfood", 
"qfoodallergy", "qwenthungry", "qmusclestrength", "qsunscreenuse", 
"qindoortanning", "qsunburn", "qconcentrating", "qcurrentasthma", 
"qwheresleep", "qspeakenglish", "qtransgender", "qnbikehelmet", 
"qndrivemarijuana", "qncelldriving", "qnpropertydamage", "qnbullyweight", 
"qnbullygender", "qnbullygay", "qnchokeself", "qncigschool", 
"qnchewtobschool", "qnalcoholschool", "qntypealcohol", "qnhowmarijuana", 
"qnmarijuanaschool", "qncurrentcocaine", "qncurrentheroin", "qncurrentmeth", 
"qnhallucdrug", "qnprescription30d", "qngenderexp", "qntaughtHIV", 
"qntaughtsexed", "qntaughtstd", "qntaughtcondom", "qntaughtbc", 
"qndietpop", "qncoffeetea", "qnsportsdrink", "qnspdrk1", "qnspdrk2", 
"qnspdrk3", "qnenergydrink", "qnsugardrink", "qnwater", "qnwater1", 
"qnwater2", "qnwater3", "qnfastfood", "qnfoodallergy", "qnwenthungry", 
"qnmusclestrength", "qnsunscreenuse", "qnindoortanning", "qnsunburn", 
"qnconcentrating", "qncurrentasthma", "qnwheresleep", "qnspeakenglish", 
"qntransgender")

Как упоминалось в предыдущем комментарии, мы можем использовать метод read.fwf, чтобы прочитать фиксированный файл * .dat в (я сохранил только подмножество ... Я ожидаю, что чтение всего файла займет некоторое время):

df <- read.fwf(file = "c:/temp/file", widths = vec)
# Rename columns
names(df) <- names
# Inspect the head.
head(df, n=2)
# sitecode                                           sitename                                           sitetype sitetypenum year survyear weight stratum PSU record age sex grade race4 race7
# 1    XX    United States (XX)                                 National                                                     3 1991        1 0.2645   12210   5  29890   .   .     1     3     4
# 2    XX    United States (XX)                                 National                                                     3 1991        1 0.5060   12310  29  29891   .   .     .     .     .
# stheight stweight      bmi   bmipct qnobese qnowt q67 q66    sexid   sexid2  sexpart sexpart2 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 Q23 Q24 Q25 Q26 Q27 Q28 Q29 Q30 Q31 Q32 Q33
# 1      .        .      .          .         .     .  NA  NA        .        .        .        .  2  4  NA  NA   4  NA  NA  NA  NA   3  NA  NA  NA  NA  NA  NA  NA  NA   2   2   1   1   1  NA   2   4
# 2      .        .      .          .         .     .  NA  NA        .        .        .        . NA NA  NA  NA  NA  NA  NA  NA  NA   1  NA  NA  NA  NA  NA  NA  NA  NA   1   1   1   1   1  NA   1   1
# Q34 Q35 Q36 Q37 Q38 Q39 Q40 Q41 Q42 Q43 Q44 Q45 Q46 Q47 Q48 Q49 Q50 Q51 Q52 Q53 Q54 Q55 Q56 Q57 Q58 Q59 Q60 Q61 Q62 Q63 Q64 Q65 Q68 Q69 Q70 Q71 Q72 Q73 Q74 Q75 Q76 Q77 Q78 Q79 Q80 Q81 Q82 Q83 Q84
# 1  NA  NA  NA  NA  NA  NA   4   4   3  NA  NA  NA   5   5   5   1  NA  NA  NA  NA  NA   1  NA  NA   1   1   5   4   4   3   3   8   1  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA   6  NA  NA
# 2  NA  NA  NA  NA  NA  NA   6   2   2  NA  NA  NA   1   1   1   1  NA  NA  NA  NA  NA   1  NA  NA   1   1   2   2   2   3   3   2   3  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA   6  NA  NA
# Q85 Q86 Q87 Q88 Q89 QN8 QN9 QN10 QN11 QN12 QN13 QN14 QN15 QN16 QN17 QN18 QN19 QN20 QN21 QN22 QN23 QN24 QN25 QN26 QN27 QN28 QN29 QN30 QN31 QN32 QN33 QN34 QN35 QN36 QN37 QN38 QN39 QN40 QN41 QN42
# 1  NA  NA  NA  NA  NA   1   1    .    .    1    .    .    .    .    1    .    .    .    .    .    .    .    .    2    2    2    2    1    .    1    2    .    .    .    .    .    .    1    1    1
# 2  NA  NA  NA  NA  NA   .   .    .    .    .    .    .    .    .    2    .    .    .    .    .    .    .    .    1    1    2    2    1    .    2    .    .    .    .    .    .    .    1    1    1
# QN43 QN44 QN45 QN46 QN47 QN48 QN49 QN50 QN51 QN52 QN53 QN54 QN55 QN56 QN57 QN58 QN59 QN60 QN61 QN62 QN63 QN64 QN65 QN68 QN69 QN70 QN71 QN72 QN73 QN74 QN75 QN76 QN77 QN78 QN79 QN80 QN81 QN82 QN83
# 1    .    .    .    1    2    1    2    .    .    .    .    .    2    .    .    1    1    2    2    1    2    2    2    2    .    .    .    .    .    .    .    .    .    .    .    .    .    1    .
# 2    .    .    .    2    2    2    2    .    .    .    .    .    2    .    .    1    1    1    2    2    .    .    .    2    .    .    .    .    .    .    .    .    .    .    .    .    .    1    .
# QN84 QN85 QN86 QN87 QN88 QN89 qnfrcig qndaycig qnfrevp qndayevp qnfrskl qndayskl qnfrcgr qndaycgr qntb2 qntb3 qntb4 qniudimp qnshparg qnothhpl qndualbc qnbcnone qnfr0 qnfr1 qnfr2 qnfr3 qnveg0
# 1    .    .    .    .    .    .       2        2       .        .       .        .       .        .     .     .     .        .        .        .        .        2     .     .     .     .      .
# 2    .    .    .    .    .    .       2        2       .        .       .        .       .        .     .     .     .        .        .        .        .        .     .     .     .     .      .
# qnveg1 qnveg2 qnveg3 qnsoda1 qnsoda2 qnsoda3 qnmilk1 qnmilk2 qnmilk3 qnbk7day qnpa0day qnpa7day qndlype qnnodnt qbikehelmet qdrivemarijuana qcelldriving qpropertydamage qbullyweight qbullygender
# 1      .      .      .       .       .       .       .       .       .        .        .        .       1       .           2              NA           NA              NA           NA           NA
# 2      .      .      .       .       .       .       .       .       .        .        .        .       1       .          NA              NA           NA              NA           NA           NA
# qbullygay qchokeself qcigschool qchewtobschool qalcoholschool qtypealcohol qhowmarijuana qmarijuanaschool qcurrentcocaine qcurrentheroin qcurrentmeth qhallucdrug qprescription30d qgenderexp
# 1        NA         NA         NA             NA             NA           NA            NA               NA               1             NA           NA          NA               NA         NA
# 2        NA         NA         NA             NA             NA           NA            NA               NA               1             NA           NA          NA               NA         NA
# qtaughtHIV qtaughtsexed qtaughtstd qtaughtcondom qtaughtbc qdietpop qcoffeetea qsportsdrink qenergydrink qsugardrink qwater qfastfood qfoodallergy qwenthungry qmusclestrength qsunscreenuse
# 1          2           NA         NA            NA        NA       NA         NA           NA           NA          NA     NA        NA           NA          NA               1            NA
# 2          1           NA         NA            NA        NA       NA         NA           NA           NA          NA     NA        NA           NA          NA               2            NA
# qindoortanning qsunburn qconcentrating qcurrentasthma qwheresleep qspeakenglish qtransgender qnbikehelmet qndrivemarijuana qncelldriving qnpropertydamage qnbullyweight qnbullygender qnbullygay
# 1             NA       NA             NA             NA          NA            NA           NA            1                .             .                .             .             .          .
# 2             NA       NA             NA             NA          NA            NA           NA            .                .             .                .             .             .          .
# qnchokeself qncigschool qnchewtobschool qnalcoholschool qntypealcohol qnhowmarijuana qnmarijuanaschool qncurrentcocaine qncurrentheroin qncurrentmeth qnhallucdrug qnprescription30d qngenderexp
# 1           .           .               .               .             .              .                 .                2               .             .            .                 .           .
# 2           .           .               .               .             .              .                 .                2               .             .            .                 .           .
# qntaughtHIV qntaughtsexed qntaughtstd qntaughtcondom qntaughtbc qndietpop qncoffeetea qnsportsdrink qnspdrk1 qnspdrk2 qnspdrk3 qnenergydrink qnsugardrink qnwater qnwater1 qnwater2 qnwater3
# 1           2             .           .              .          .         .           .             .        .        .        .             .            .       .        .        .        .
# 2           1             .           .              .          .         .           .             .        .        .        .             .            .       .        .        .        .
# qnfastfood qnfoodallergy qnwenthungry qnmusclestrength qnsunscreenuse qnindoortanning qnsunburn qnconcentrating qncurrentasthma qnwheresleep qnspeakenglish qntransgender
# 1          .             .            .                2              .               .         .               .               .            .              .             .
# 2          .             .            .                2              .               .         .               .               .            .              .             .
[ 1111] Обратите внимание, что любые символьные столбцы, возможно, должны быть обрезаны. Отсутствуют также "." Так что вы, вероятно, захотите удалить и их.

0
ответ дан Khaynes 19 January 2019 в 12:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: