Эффективный способ разбить фрейм данных на несколько фреймов данных - PullRequest
0 голосов
/ 19 мая 2019

У меня довольно большой фрейм данных, и я пытаюсь разделить этот фрейм данных на несколько меньших. Предположим, у меня есть этот фрейм данных с именем df:

   Patient   Status    cancer
1        1  treated  melanoma
2        2 deceased  melanoma
3        3 deceased carcinoma
4        4  treated  lymphoma
5        5 deceased  melanoma
6        6  treated carcinoma
7        7 deceased  lymphoma
8        8 deceased carcinoma
9        9  treated  melanoma
10      10  treated  melanoma

Я хочу установить подкадры данных на основе столбца «рак» и сохранить их в соответствующем объекте следующим образом:

  Patient   Status    cancer
1       3 deceased carcinoma
2       6  treated carcinoma
3       8 deceased carcinoma

  Patient   Status   cancer
1       1  treated melanoma
2       2 deceased melanoma
3       5 deceased melanoma
4       9  treated melanoma
5      10  treated melanoma

  Patient   Status   cancer
1       4  treated lymphoma
2       7 deceased lymphoma

Мне удалось написать этот код, используя функцию dplyr filter, и он выполняет свою работу, но из-за того, что мой начальный фрейм данных довольно большой, зацикливание задыхает мой компьютер,

factors = c(levels(df[,"cancer"]))
for (i in factors) {
  assign(i, filter(df, cancer == i), envir = .GlobalEnv)
  }

Буду признателен, если кто-нибудь предложит более оптимизированную альтернативу.

С наилучшими пожеланиями.

1 Ответ

0 голосов
/ 19 мая 2019

Если у вас есть фреймы данных, для которых операции обычно медленны, рассмотрите возможность перехода на каркас data.table. Вы будете удивлены увеличением производительности.

...