首页 > 解决方案 > 如何使用 R 将每一行的数据帧转换为 json?

问题描述

我有数据框。df1: 在此处输入图像描述 ('array' 列是 json 数组)

df1 <- data.frame(email = c('user1', 'user2', 'user3', 'user4'), date = c('2021.07.07', '2021.07.07', '2021.07.07','2021.07.07'), timestamp=c(1625643960,1625643961,1625643962,1625643963), type=c('general','general','special','special'),
               array=c('[{"id":"id1","name":"name1"},{"id":"id2","name":"name2"},{"id":"id3","name":"name3"}]', '[{"id":"id1","name":"name1"},{"id":"id2","name":"name2"},{"id":"id3","name":"name3"}]', '[{"id":"id5","name":"name5"},{"id":"id2","name":"name2"},{"id":"id3","name":"name5"}]', '[{"id":"id4","name":"name4"},{"id":"id2","name":"name2"},{"id":"id3","name":"name6"}]'))

我想改变df1。像这样.. 在此处输入图像描述

如何在没有 for 循环的情况下制作 df2?

标签: rjsondataframedplyr

解决方案


您可以使用sprintf

result <- cbind(df1[1], json = with(df1, 
                sprintf('{"email":"%s", "date":"%s", "timestamp":%d, 
                "type": "%s", "array":%s', email, date, timestamp, type, array)))

result

# email
#1 user1
#2 user2
#3 user3
#4 user4
                                                                                                                                                                             #json
#1 {"email":"user1", "date":"2021.07.07", "timestamp":1625643960, "type": "general", "array":[{"id":"id1","name":"name1"},{"id":"id2","name":"name2"},{"id":"id3","name":"name3"}]
#2 {"email":"user2", "date":"2021.07.07", "timestamp":1625643961, "type": "general", "array":[{"id":"id1","name":"name1"},{"id":"id2","name":"name2"},{"id":"id3","name":"name3"}]
#3 {"email":"user3", "date":"2021.07.07", "timestamp":1625643962, "type": "special", "array":[{"id":"id5","name":"name5"},{"id":"id2","name":"name2"},{"id":"id3","name":"name5"}]
#4 {"email":"user4", "date":"2021.07.07", "timestamp":1625643963, "type": "special", "array":[{"id":"id4","name":"name4"},{"id":"id2","name":"name2"},{"id":"id3","name":"name6"}]

推荐阅读