在每个数据框中,我都有一个如下所示的行条目:
[{'degree': 0.1, 'name': 'Colins Dental Clinic', 'rating': 9, 'level': 'fourth'}]
它是从文件的
read.csv
直接导入。
我想从每个条目创建两列,从上面提取两个数值,0.1 和 9,它们是牙科诊所的程度和评级信息。
我尝试了子字符串并使用
sep=","
带引号,但我只是没有正确理解。
我该如何正确做?
看起来 JSON 数据格式不正确(因为单引号)。
您没有提供数据框的示例,但您可以尝试这样的操作(2 个选项):
### Packages
library(dplyr)
library(stringr)
library(jsonlite)
### Data
df=data.frame(col1="dummy",
col2="dummy",
col3="[{'degree': 0.1, 'name': 'Colins Dental Clinic', 'rating': 9, 'level': 'fourth'}]")
### Option 1 : Transform your column data into a valid JSON then extract data from it
df1=df %>% mutate(col3=str_replace_all(col3,"'","\\\""),
degree=fromJSON(col3)$degree,
rating=fromJSON(col3)$rating)
### Option 2 : Use regex to get directly what you need (less secure)
df2=df %>% mutate(degree=str_extract(col3,"(?<=degree': )\\d\\.\\d"),
rating=str_extract(col3,"(?<=rating': )\\d"))
输出: