将数据框拆分为列表并删除索引

时间:2019-04-02 02:25:07

标签: r

我想基于索引将数据框拆分为列表,但是在列表中,我不想包含索引。

例如,我想基于mpg在mtcars数据中拆分数据帧。

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

lst的每个元素中仍有mpg。我希望不包括mpg。有没有简单的方法可以做到这一点?谢谢。

2 个答案:

答案 0 :(得分:2)

我们可以使用group_split中的dplyr,该参数具有keep参数,该参数需要布尔值来保留或不保留列

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

使用base R,可以使用setdiff删除该列

split(mtcars[setdiff(names(mtcars), "mpg")], mtcars$mpg)

答案 1 :(得分:2)

这是一个经常被遗忘的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

reprex package(v0.2.1)于2019-04-01创建