提取数据框中数值的实例

问题描述 投票:0回答:1

在每个数据框中,我都有一个如下所示的行条目:

[{'degree': 0.1, 'name': 'Colins Dental Clinic', 'rating': 9, 'level': 'fourth'}]

它是从文件的

read.csv
直接导入。

我想从每个条目创建两列,从上面提取两个数值,0.1 和 9,它们是牙科诊所的程度和评级信息。

我尝试了子字符串并使用

sep=","
带引号,但我只是没有正确理解。

我该如何正确做?

r dataframe substring gsub
1个回答
0
投票

看起来 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"))

输出:

Output

© www.soinside.com 2019 - 2024. All rights reserved.