【问题标题】:How to separate a JSON string into multiple columns in R如何在R中将JSON字符串分成多列
【发布时间】:2021-11-12 11:59:35
【问题描述】:

我有一列包含字典格式的字符串,如下所示:

{'district': 'Ilha do Retiro', 'city': 'RECIFE', 'state': 'PE', 'country': 'BR', 'latitude': -8.062004, 'longitude': -34.908081, 'timezone': 'Etc/GMT+3', 'zipCode': '50830000', 'streetName': 'Avenida Engenheiro Abdias de Carvalho', 'streetNumber': '365'}

我想为每个键创建一列,用每一行的值填充。

我尝试使用单独的正则表达式:

separate(data, address, into = c('district', 'city', 'state', 'country',
                                   'latitude', 'longitude', 'timezone',
                                   'zipCode', 'streetName', 'streetNumber'), 
         "/:.*?/,")

但是,这不起作用,也许使用单独的正则表达式甚至不是最好的做法。有什么建议吗?

【问题讨论】:

    标签: r regex tidyverse data-wrangling


    【解决方案1】:

    由于它实际上是 JSON(尽管使用单引号而不是必需的双引号),我们可以使用 jsonlite:

    txt <- "{'district': 'Ilha do Retiro', 'city': 'RECIFE', 'state': 'PE', 'country': 'BR', 'latitude': -8.062004, 'longitude': -34.908081, 'timezone': 'Etc/GMT+3', 'zipCode': '50830000', 'streetName': 'Avenida Engenheiro Abdias de Carvalho', 'streetNumber': '365'}"
    as.data.frame(jsonlite::parse_json(gsub("'", '"', txt)))
    #         district   city state country  latitude longitude  timezone  zipCode                            streetName streetNumber
    # 1 Ilha do Retiro RECIFE    PE      BR -8.062004 -34.90808 Etc/GMT+3 50830000 Avenida Engenheiro Abdias de Carvalho          365
    

    【讨论】:

      猜你喜欢
      • 2021-08-20
      • 2020-10-06
      • 2021-02-19
      • 2020-03-28
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      相关资源
      最近更新 更多