如何在名称/值对中将R数据帧转换为Json?

时间:2017-09-21 18:08:27

标签: json r dataframe jsonlite

我有以下R数据框:

df[df.C>df.C.quantile(1-(5/len(df)))]

我希望JSON输出为

        Values
Type1   123
Type2   4565
Type3   7812

数字字段可以引用

我使用jsonlite toJSON,输出为:

{"Type1":123, "Type2":4565, "Type3":7812}

2 个答案:

答案 0 :(得分:4)

使用rjson的解决方案:

df <- data.frame(Values = c(123, 4565, 7812))
rownames(df) <- paste0("Type", 1:3)

library(rjson)
toJSON(setNames(df$Values, rownames(df)))

[1] "{\"Type1\":123,\"Type2\":4565,\"Type3\":7812}"

答案 1 :(得分:0)

jsonlite实际上是在保留您的数据结构,即保持您的 rownames Type1Type2Type3)。

无论如何,使用jsonlite可以获得相同的行为:

> jsonlite::toJSON(df %>% t() %>% tibble::as_data_frame())
[{"Type1":123,"Type2":4565,"Type3":7812}] 

请注意,使用此解决方案,您将丢失原始列名Values。如果行名称很重要但不是列名称,则应考虑以不同的方式定义数据,因为处理rownames可以获得messy。您可以将Type作为第二列添加或转置数据 - 一行,与类型一样多的列。