我想基于索引将数据框拆分为列表,但是在列表中,我不想包含索引。
例如,我想基于mpg在mtcars数据中拆分数据帧。
data(mtcars)
lst <- split(mtcars, mtcars$mpg)
lst
的每个元素中仍有mpg。我希望不包括mpg。有没有简单的方法可以做到这一点?谢谢。
答案 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创建