按一列中的因子拆分/子集数据帧

tit*_*iti 29 r subset

我的数据是这样的(例如):

ID  Rate    State
1   24  AL
2   35  MN
3   46  FL
4   34  AL
5   78  MN
6   99  FL
Run Code Online (Sandbox Code Playgroud)

数据:

structure(list(ID = 1:6, Rate = c(24L, 35L, 46L, 34L, 78L, 99L),
               State = structure(c(1L, 3L, 2L, 1L, 3L, 2L),
                                 .Label = c("AL","FL", "MN"),
                                 class = "factor")),
          .Names = c("ID", "Rate", "State"),
          class = "data.frame", row.names = c(NA, -6L))
Run Code Online (Sandbox Code Playgroud)

我想按状态拆分数据,我想得到3个数据集,如下所示:

data set 1
ID  Rate    State
1   24  AL
4   34  AL
data set 2
ID  Rate    State
2   35  MN
5   78  MN
data set 3
ID  Rate    State
3   46  FL
6   99  FL
Run Code Online (Sandbox Code Playgroud)

我应该使用什么功能?

我正在考虑拆分或子集功能,但仍然没有任何线索.

Sim*_*lon 51

我们可以使用split:

mylist <- split(df, df$State)

mylist
$AL
  ID Rate State
1  1   24    AL
4  4   34    AL

$FL
  ID Rate State
3  3   46    FL
6  6   99    FL

$MN
  ID Rate State
2  2   35    MN
5  5   78    MN
Run Code Online (Sandbox Code Playgroud)

要访问元素编号:

mylist[[1]]
Run Code Online (Sandbox Code Playgroud)

或按名称:

mylist$AL
  ID Rate State
1  1   24    AL
4  4   34    AL
Run Code Online (Sandbox Code Playgroud)

?split

描述

split将矢量x中的数据划分为f定义的组.替换形式替换对应于这种划分的值.unsplit逆转了分裂的效果.