Разделите фрейм данных в список и удалите индекс - PullRequest
2 голосов
/ 02 апреля 2019

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

Например, я хочу разделить фрейм данных в данных mtcars на основе mpg.

data(mtcars)
lst <- split(mtcars, mtcars$mpg)

В lst все еще есть mpg в каждом элементе. Я надеюсь не включать MPG. Есть ли простой способ сделать это? Спасибо.

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

Это достойный пример использования часто забытого пакета plyr.Я просто использовал верхние три строки mtcars для иллюстрации:

library(plyr)
dlply(head(mtcars,3), "mpg", function(x) x[, -1])
#> $`21`
#>   cyl disp  hp drat    wt  qsec vs am gear carb
#> 1   6  160 110  3.9 2.620 16.46  0  1    4    4
#> 2   6  160 110  3.9 2.875 17.02  0  1    4    4
#> 
#> $`22.8`
#>   cyl disp hp drat   wt  qsec vs am gear carb
#> 1   4  108 93 3.85 2.32 18.61  1  1    4    1
#> 
#> attr(,"split_type")
#> [1] "data.frame"
#> attr(,"split_labels")
#>    mpg
#> 1 21.0
#> 2 22.8

Создано в 2019-04-01 пакетом Представить (v0.2.1)

2 голосов
/ 02 апреля 2019

Мы можем использовать group_split из dplyr с параметром keep, который принимает логическое значение для сохранения столбца или без

library(dplyr)
mtcars %>% 
    group_split(mpg, keep = FALSE)

При base R столбец можно удалить с помощью setdiff

split(mtcars[setdiff(names(mtcars), "mpg")], mtcars$mpg)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...