从R中的数据框创建列表

May*_*you 2 r list dataframe

考虑以下数据帧:

test.df <- data.frame(a = c("1991-01-01","1991-01-01","1991-02-01","1991-02-01"), b = rnorm(4), c = rnorm(4))
Run Code Online (Sandbox Code Playgroud)

我想创建一个列表test.df.列表的每个元素将是test.df对应于特定值(column a即每个日期)的子集数据帧.换句话说,在这种情况下,column a采用唯一值1991-01-011991-02-01.因此,结果列表将包含两个元素:test.dfwhen a = 1991-01-01(不包括列a)的子集,列表的另一个元素将是test.dfwhen 1991-02-01 = 2(不包括列a)的子集.这是我要找的输出:

lst <- list(test.df[1:2,2:3], test.df[3:4,2:3]) 
Run Code Online (Sandbox Code Playgroud)

请注意,子集数据帧可能不具有相同的行数.

在我的实际例子中,column a是一个包含更多值的日期列.

我将不胜感激任何帮助!非常感谢!

kon*_*vas 5

您可以使用 split

lst <- split(test.df, test.df$a)
Run Code Online (Sandbox Code Playgroud)

如果你想摆脱列a,请使用split(test.df[-1], test.df$a)(感谢@akrun的评论).

  • 你可以使用`split(test.df [, - 1],test.df $ a)` (2认同)