Хотите вывести два значения из каждой строки огромного файла JSONL в R Studio - PullRequest
0 голосов
/ 11 октября 2018

Я иду по огромной строке файла JSONL (100G, 100M строк) строка за строкой, извлекая два ключевых значения из данных.В идеале я хочу, чтобы это было записано в файл с двумя столбцами.Я настоящий новичок здесь.

Вот пример JSON в каждой строке файла, на который есть ссылка на моем диске C: https://api.unpaywall.org/v2/10.6118/jmm.2017.23.2.135?email=YOUR_EMAIL

or:
{
    "best_oa_location": {
        "evidence": "open (via page says license)",
        "host_type": "publisher",
        "is_best": true,
        "license": "cc-by-nc",
        "pmh_id": null,
        "updated": "2018-02-14T11:18:21.978814",
        "url": "FAKEURL",
        "url_for_landing_page": "URL2",
        "url_for_pdf": "URL4",
        "version": "publishedVersion"
    },
    "data_standard": 2,
    "doi": "10.6118/jmm.2017.23.2.135",
    "doi_url": "URL5",
    "genre": "journal-article",
    "is_oa": true,
    "journal_is_in_doaj": false,
    "journal_is_oa": false,
    "journal_issns": "2288-6478,2288-6761",
    "journal_name": "Journal of Menopausal Medicine",
    "oa_locations": [
        {
            "evidence": "open (via page says license)",
            "host_type": "publisher",
            "is_best": true,
            "license": "cc-by-nc",
            "pmh_id": null,
            "updated": "2018-02-14T11:18:21.978814",
            "url": "URL6",
            "url_for_landing_page": "hURL7": "hURL8",
            "version": "publishedVersion"
        },
        {
            "evidence": "oa repository (via OAI-PMH doi match)",
            "host_type": "repository",
            "is_best": false,
            "license": "cc-by-nc",
            "pmh_id": "oai:pubmedcentral.nih.gov:5606912",
            "updated": "2017-10-21T18:12:39.724143",
            "url": "URL9",
            "url_for_landing_page": "URL11",
            "url_for_pdf": "URL12",
            "version": "publishedVersion"
        },
        {
            "evidence": "oa repository (via pmcid lookup)",
            "host_type": "repository",
            "is_best": false,
            "license": null,
            "pmh_id": null,
            "updated": "2018-10-11T01:49:34.280389",
            "url": "URL13",
            "url_for_landing_page": "URL14",
            "url_for_pdf": null,
            "version": "publishedVersion"
        }
    ],
    "published_date": "2017-01-01",
    "publisher": "The Korean Society of Menopause (KAMJE)",
    "title": "A Case of Granular Cell Tumor of the Clitoris in a Postmenopausal Woman",
    "updated": "2018-06-20T20:31:37.509896",
    "year": 2017,
    "z_authors": [
        {
            "affiliation": [
                {
                    "name": "Department of Obstetrics and Gynecology, Soonchunhyang University Cheonan Hospital, University of Soonchunhyang College of Medicine, Cheonan, Korea."
                }
            ],
            "family": "Min",
            "given": "Ji-Won"
        },
        {
            "affiliation": [
                {
                    "name": "Department of Obstetrics and Gynecology, Soonchunhyang University Cheonan Hospital, University of Soonchunhyang College of Medicine, Cheonan, Korea."
                }
            ],
            "family": "Kim",
            "given": "Yun-Sook"
        }
    ]
}

Вот код i 'm используя / wrote:

library (magrittr)

library (jqr)

con = file("C:/users/ME/desktop/miniunpaywall.jsonl", "r");

while ( length(line <- readLines(con, n = -1)) > 0) {

write.table( line %>% jq ('.doi,.best_oa_location.license'), file='test.txt', quote=FALSE, row.names=FALSE);}

В результате получается строка текста для каждой строки JSON, которая выглядит следующим образом:

"10.1016/j.ijcard.2018.10.014,CC-BY"

Это эффективно:

"[DOI],[LICENSE]"

В идеале я хочу, чтобы результат был:

[DOI] tab [LICENSE]

Я считаю, что моя проблема в том, что я записываю значения в виде строки в один столбец, когда я говорю:

write.table( line %>% jq ('.doi,.best_oa_location.license')

Я не нашел способ удалить кавычки, которые я обхожу вокруг каждой строки в моем файле, или как я могу разделить два значения с помощью вкладки.Я чувствую, что я довольно близкоПомогите!

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