Создание подгрупп в R - PullRequest
0 голосов
/ 22 марта 2020

Я действительно новичок в R и испытываю некоторые трудности. У меня есть гигантская таблица с более чем 5000 строк, и один из столбцов вес. Я пытаюсь создать таблицы меньшего размера, один из которых содержит все предметы весом менее 500 г, а следующий - все предметы весом от 500 до 1000 г и так далее. Это кажется относительно простым процессом, но я просто не могу понять это.

Ответы [ 2 ]

1 голос
/ 22 марта 2020

Подмножество ваших данных:

Иллюстративные данные :

set.seed(123)
df <- data.frame(
  subject = LETTERS[1:10],
  weight = sample(1:1000, 10)
)

Решение :

Чтобы создать подмножество для предметы с весом меньше или равным 500:

df[df$weight <= 500, ]

Результат :

df[df$weight <= 500, ]
   subject weight
1        A    288
3        C    409
6        F     46
10       J    453
1 голос
/ 22 марта 2020

Здесь есть два шага: разбить фрейм данных на таблицы и отобразить их. Вот один из способов сделать это:

library(dplyr)
df <- data.frame(a=c(1,2,3,4,5,6,7,8,9), 
                 b=c(2,4,6,8,10,12,14,16,18), 
                 weight=c(500,1000,1500,500,1000,1500,500,1000,1500))

df %>% group_split(weight)

[[1]]
# A tibble: 3 x 3
      a     b weight
  <dbl> <dbl>  <dbl>
1     1     2    500
2     4     8    500
3     7    14    500

[[2]]
# A tibble: 3 x 3
      a     b weight
  <dbl> <dbl>  <dbl>
1     2     4   1000
2     5    10   1000
3     8    16   1000

[[3]]
# A tibble: 3 x 3
      a     b weight
  <dbl> <dbl>  <dbl>
1     3     6   1500
2     6    12   1500
3     9    18   1500

После разделения кадра данных вы можете отображать результаты различными способами, например, HTML output:

library(knitr)
> df %>% group_split(weight) %>% kable()

|  a|  b| weight|
|--:|--:|------:|
|  1|  2|    500|
|  4|  8|    500|
|  7| 14|    500|

|  a|  b| weight|
|--:|--:|------:|
|  2|  4|   1000|
|  5| 10|   1000|
|  8| 16|   1000|

|  a|  b| weight|
|--:|--:|------:|
|  3|  6|   1500|
|  6| 12|   1500|
|  9| 18|   1500|

Или вы может отправить вывод в подпрограммы форматирования данных, например, df %>% group_split(weight) %>% regulartable() %>% autofit() из library(flextable).

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