Изолировать фреймы данных из электронной таблицы, чтобы создать список - PullRequest
0 голосов
/ 11 декабря 2018

Как мне изолировать фреймы данных в R от большой электронной таблицы данных и создать список из изолированных фреймов данных?

Например, мои данные о продажах яблок, проданных разными группами в разных штатах, находятся в этомформат:

> data
1                    NSW   VIC   QLD
2 Group1       2013  500   501   985     
3              2014  601   520   999
4              2015  410   435   894
5 Group2       2013  508   501   806     
6              2014  694   780   899
7 Group3       2013  305   501   985     
8              2014  122   440   704
9              2015  210   235   523

Я хочу, чтобы все данные для группы 1 (строки 2–4) были кадрами данных 1, данные из группы 2 (строки 5–6) должны быть данными 2, данные группы 3 (строки 7–9)быть dataframe3 и т. д.

Затем я создаю список:

data.list <- list(dataframe1,dataframe2,dataframe3, ....)

Поскольку каждый кадр данных может различаться по количеству строк, я не могу сделать цикл, который делает данныерамка для каждого х количество строк.Каков наилучший подход для разделения исходного набора данных на отдельные кадры данных на основе первого столбца, содержащего принадлежность «Группа»?

Я хочу создать список, который выглядит следующим образом:

> data.list
[[Group1]]
                     NSW   VIC   QLD
1              2013  500   501   985     
2              2014  601   520   999
3              2015  410   435   894

[[Group2]]
                     NSW   VIC   QLD
1              2013  508   501   806     
2              2014  694   780   899

[[Group3]]
                     NSW   VIC   QLD
1              2013  305   501   985     
2              2014  122   440   704
3              2015  210   235   523
  • Примечание. Это просто фиктивные данные, не стесняйтесь читать любые данные, для которых проще всего написать код.

1 Ответ

0 голосов
/ 11 декабря 2018
df <- structure(list(group = structure(c(2L, 1L, 1L, 3L, 1L, 4L, 1L, 
                                         1L), .Label = c("", "Group1", "Group2", "Group3"), class = "factor"), 
                     year = c(2013L, 2014L, 2015L, 2013L, 2014L, 2013L, 2014L, 
                              2015L), NSW = c(500L, 601L, 410L, 508L, 694L, 305L, 122L, 
                                              210L), VIC = c(501L, 520L, 435L, 501L, 780L, 501L, 440L, 
                                                             235L), QLD = c(985L, 999L, 894L, 806L, 899L, 985L, 704L, 
                                                                            523L)), class = "data.frame", row.names = c(NA, -8L))

df_list <- split(df, as.factor(df$group))

split поможет вам создать различные списки из групп, используя baseR

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...