Я просматривал переполнение стека и в Интернете, пытаясь найти множество решений, которые были предложены для других проблем и дошли до этого этапа, как показано ниже.
Заранее прошу прощения за то, что очень плохо знаком с R и кодирую вgeneral.
Ситуация: я получил некоторые данные из java-источника в виде файла .json.Я хочу преобразовать его во фрейм данных, чтобы мне было удобнее использовать его для анализа изменения значения с течением времени.
Проблема: информация отображается в виде многослойного вложенного списка в файле json.
Появляется в форме:
{"daily":{"1534550400000":14005196,"1550016000000":5924765},"average":{"1534550400000":13750989,"1550016000000":7966277}}
Количество дневных значений равно количеству средних значений.«x» - это код даты, подсчитывающий время в миллисекундах с 1 января 1970 года, а значение после «:» представляет собой целое число.
Когда я использую fromJSON, чтобы вытащить его в R, оно появляется в виде вложенных списков.:
Library(jsonlite)
x<-fromJSON("short.json")
str(x)
List of 2
$ daily :List of 2
..$ 1534550400000: int 14005196
..$ 1550016000000: int 5924765
$ average:List of 2
..$ 1534550400000: int 13750989
..$ 1550016000000: int 7966277
Я разделяю ежедневные и средние списки, так как они будут в разных фреймах данных.
daily<-x[[1]]
average<-x[[2]]
> str(daily)
List of 2
$ 1534550400000: int 14005196
$ 1550016000000: int 5924765
> str(average)
List of 2
$ 1534550400000: int 13750989
$ 1550016000000: int 7966277
Если я продолжу с daily1 <-daily [[1]], тогда япотерять данные о времени, которые мне нужны. </p>
Мой мыслительный процесс заключается в том, что я должен сгладить временные списки и целые числа и создать фрейм данных, в котором я бы разделил сглаженную информацию на два столбца.
MyОсновная проблема с этим заключается в том, что я не уверен, как сгладить списки, вложенные в другой список.
При чтении других проблем со списками многие люди использовали sapply или lapply, что оказалось для них успешным, однако яЯ зашел в тупик.
Заранее спасибо.
Я прочитал документацию для jsonlite, sapply, lapply and flatten, предоставленную краном.
РЕДАКТИРОВАТЬ: У меня естьпродолжил изучать эту проблему и нашел возможный альтернативный метод, в соответствии с которым я использую:
В этой таблице показаны все значения для дневного и среднего и ни одного из временных кодов.
as.data.frame(unlist(flatten(daily)))
1 14005196
2 5924765
3 13750989
4 7966277
Который кажется ближе к тому, что я хочу, мне нужно будет перемещать каждое второе значение в новый столбец.
EDIT2: желаемым результатом будет таблица на день:
Time Var
1 1534550400000 14005196
2 1550016000000 5924765