2014-09-12 4 views
0

Я хочу, чтобы преобразовать таблицу данных в R к набору объектов JSon: Пусть мои DataTable выглядит так:Преобразование DataTable в набор объектов JSON в R

name   group age (y) height (cm) weight (kg) score 
[1,] "Doe, John" "Red" "24" "182"  "74.8"  NA 
[2,] "Doe, Jane" "Green" "30" "170"  "70.1"  "500" 
[3,] "Smith, Joan" "Yellow" "41" "169"  "60"  NA 
[4,] "Brown, Sam" "Green" "22" "183"  "75"  "865" 
[5,] "Jones, Larry" "Green" "31" "178"  "83.9"  "221" 
[6,] "Murray, Seth" "Red" "35" "172"  "76.2"  "413" 
[7,] "Doe, Jane" "Yellow" "22" "164"  "68"  "902" 

Я хочу это следующим образом:

[{"name":"Doe, John","group":"Red","age (y)":24,"height (cm)":182,"weight (kg)":74.8,"score":null}, 
{"name":"Doe, Jane","group":"Green","age (y)":30,"height (cm)":170,"weight (kg)":70.1,"score":500}, 
{"name":"Smith, Joan","group":"Yellow","age (y)":41,"height (cm)":169,"weight (kg)":60,"score":null}, 
{"name":"Brown, Sam","group":"Green","age (y)":22,"height (cm)":183,"weight (kg)":75,"score":865}, 
{"name":"Jones, Larry","group":"Green","age (y)":31,"height (cm)":178,"weight (kg)":83.9,"score":221}, 
{"name":"Murray, Seth","group":"Red","age (y)":35,"height (cm)":172,"weight (kg)":76.2,"score":413}, 
{"name":"Doe, Jane","group":"Yellow","age (y)":22,"height (cm)":164,"weight (kg)":68,"score":902}] 

Может ли кто-нибудь помочь мне в этом?

ответ

1

Вы уверены, что это data.table? Мне нравится [1,]. Я думал, что данные. Таблица обычно делала 1:. Это больше похоже на вывод matrix.

Но если предположить, что это data.table как

dd<-data.table(
    name = c("Doe, John", "Doe, Jane", "Smith, Joan", "Brown, Sam", 
     "Jones, Larry", "Murray, Seth", "Doe, Jane"), 
    group = c("Red", "Green", "Yellow", "Green", "Green", "Red", "Yellow"), 
    "age (y)" = c(24L, 30L, 41L, 22L, 31L, 35L, 22L), 
    "height (cm)" = c(182L, 170L, 169L, 183L, 178L, 172L, 164L), 
    "weight (kg)" = c(74.8, 70.1, 60, 75, 83.9, 76.2, 68), 
    score = c(NA, 500L, NA, 865L, 221L, 413L, 902L) 
) 

, то вы можете запустить

cat(toJSON(unname(split(dd, 1:nrow(dd))))) 

, чтобы получить желаемый результат.

+0

Извините, мой плохой. Ты прав!! Я разместил фрейм данных, я думаю. Ваш ответ работает! Благодаря тонну!!! :) –

+0

Эй, я вижу, что значения в объектах json заключены в квадратные скобки следующим образом: «name»: [«Doe, Jane»] Можно ли получить их без квадратных скобок? –

+1

@RabiyaAshruff Это не происходит для меня, когда я запускаю код выше (используя R версии 3.1.0 и 'rjson_0.2.14' и' data.table_1.9.2'). Я получаю вывод, который выглядит так, как вы хотите. Можете ли вы сделать воспроизводимый пример? – MrFlick

0

Вы можете попробовать использовать tp fromJSON или toJSON на упаковке jsonlite.

library(jsonlite) 

iris2 <- fromJSON(myjson) 

myjson <- toJSON(iris, pretty=TRUE) 

надеюсь, что это поможет.

+0

Привет, я уже пробовал это раньше. Но он не дает желаемого результата. Он просто создает один объект json со всеми значениями, разделенными запятой без имен полей. –

Смежные вопросы