我想播放现在以JSON格式保存的数据。但是我对R非常陌生,对如何处理数据一无所知。您可以在下面看到我设法实现的目标。但首先,我的代码:
library(rjson) json_file <- "C:\\Users\\Saonkfas\\Desktop\\WOWPAPI\\wowpfinaljson.json" json_data <- fromJSON(paste(readLines(json_file), collapse=""))
我能够得到数据:
for (x in json_data){print (x)}
尽管输出看起来很原始:
[[1]] [[1]]$wins [1] "118" [[1]]$losses [1] "40" # And so on
请注意,JSON有点嵌套。我可以使用Python创建表,但是R似乎要复杂得多。
编辑:
我的JSON:
{ "play1": [ { "wins": "118", "losses": "40", "max_killed": "7", "battles": "158", "plane_id": "4401", "max_ground_object_destroyed": "3" }, { "wins": "100", "losses": "58", "max_killed": "7", "battles": "158", "plane_id": "2401", "max_ground_object_destroyed": "3" }, { "wins": "120", "losses": "38", "max_killed": "7", "battles": "158", "plane_id": "2403", "max_ground_object_destroyed": "3" } ], "play2": [ { "wins": "12", "losses": "450", "max_killed": "7", "battles": "158", "plane_id": "4401", "max_ground_object_destroyed": "3" }, { "wins": "150", "losses": "8", "max_killed": "7", "battles": "158", "plane_id": "2401", "max_ground_object_destroyed": "3" }, { "wins": "120", "losses": "328", "max_killed": "7", "battles": "158", "plane_id": "2403", "max_ground_object_destroyed": "3" } ],
fromJSON返回一个列表,您可以使用*apply函数来遍历每个元素。将其转换为“表”非常简单(一旦您知道该怎么做!)(数据框是正确的R术语)。
fromJSON
*apply
library(rjson) # You can pass directly the filename my.JSON <- fromJSON(file="test.json") df <- lapply(my.JSON, function(play) # Loop through each "play" { # Convert each group to a data frame. # This assumes you have 6 elements each time data.frame(matrix(unlist(play), ncol=6, byrow=T)) }) # Now you have a list of data frames, connect them together in # one single dataframe df <- do.call(rbind, df) # Make column names nicer, remove row names colnames(df) <- names(my.JSON[[1]][[1]]) rownames(df) <- NULL df wins losses max_killed battles plane_id max_ground_object_destroyed 1 118 40 7 158 4401 3 2 100 58 7 158 2401 3 3 120 38 7 158 2403 3 4 12 450 7 158 4401 3 5 150 8 7 158 2401 3 6 120 328 7 158 2403 3