#r #txt
#r #txt
Вопрос:
У меня есть текстовый файл, подобный этому: [[«seller_id»,»product_id»,»buyer_id»,»sale_date»,»quantity»,»price»],[7,11,49,»2019-01-21″,5,3330],[13,32,6,»2019-02-10″,9,1089],[50,47,4,»2019-01-06″,1,1343],[1,22,2,»2019-03-03″,9,7677]]
Я хотел бы прочитать его по R в виде таблицы, подобной этой:
seller_id | product_id | buyer_id | дата продажи | Количество | Цена |
---|---|---|---|---|---|
7 | 11 | 49 | 2019-01-21 | 5 | 3330 |
13 | 32 | 6 | 2019-02-10 | 9 | 1089 |
50 | 47 | 4 | 2019-01-06 | 1 | 1343 |
1 | 22 | 2 | 2019-03-03 | 9 | 7677 |
Как написать правильный R-код? Большое спасибо за ваше время.
Ответ №1:
Более простой вариант fromJSON
library(jsonlite)
library(janitor)
fromJSON(txt = "file1.txt") %>%
as_tibble %>%
row_to_names(row_number = 1) %>%
type.convert(as.is = TRUE)
-вывод
# A tibble: 4 x 6
# seller_id product_id buyer_id sale_date quantity price
# <int> <int> <int> <chr> <int> <int>
#1 7 11 49 2019-01-21 5 3330
#2 13 32 6 2019-02-10 9 1089
#3 50 47 4 2019-01-06 1 1343
#4 1 22 2 2019-03-03 9 7677
Ответ №2:
Вам нужно будет проанализировать json из массивов во фрейм данных. Возможно, что-то вроде этого:
# Get string
str <- '[["seller_id","product_id","buyer_id","sale_date","quantity","price"],[7,11,49,"2019-01-21",5,3330],[13,32,6,"2019-02-10",9,1089],[50,47,4,"2019-01-06",1,1343],[1,22,2,"2019-03-03",9,7677]]'
df_list <- jsonlite::parse_json(str)
do.call(rbind, lapply(df_list[-1], function(x) {
setNames(as.data.frame(x), unlist(df_list[1]))}))
#> seller_id product_id buyer_id sale_date quantity price
#> 1 7 11 49 2019-01-21 5 3330
#> 2 13 32 6 2019-02-10 9 1089
#> 3 50 47 4 2019-01-06 1 1343
#> 4 1 22 2 2019-03-03 9 7677
Создано 2020-12-11 пакетом reprex (версия 0.3.0)
Ответ №3:
Некоторые базовые параметры R с использованием:
gsub
read.table
read.table(
text = gsub('"|\[|\]', "", gsub("\],", "n", s)),
sep = ",",
header = TRUE
)
gsub
read.csv
read.csv(text = gsub('"|\[|\]', "", gsub("\],", "n", s)))
что дает
seller_id product_id buyer_id sale_date quantity price
1 7 11 49 2019-01-21 5 3330
2 13 32 6 2019-02-10 9 1089
3 50 47 4 2019-01-06 1 1343
4 1 22 2 2019-03-03 9 7677
Данные
s <- '[["seller_id","product_id","buyer_id","sale_date","quantity","price"],[7,11,49,"2019-01-21",5,3330],[13,32,6,"2019-02-10",9,1089],[50,47,4,"2019-01-06",1,1343],[1,22,2,"2019-03-03",9,7677]]'