Попытка разбить фрейм данных по теме одной командой

Скажем, у меня есть большой фрейм данных в длинном формате, где каждый субъект занимает 5 строк, всего 5 субъектов.

x=c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5)
df=data.frame(x, 1:25)

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

s01=df[df$x==1,]

5 раз, но я хочу создать все пять фреймов данных за один раз, используя одну команду. Есть ли способ сделать это (например, с помощью цикла for или чего-то вроде lapply)? Я пробовал использовать цикл for, но не знаю, как заставить его выводить 5 отдельных объектов с разными именами.


person cmpsych93    schedule 04.07.2016    source источник


Ответы (1)


Вы можете просто сделать:

result <- split(df, df$x)

Это вернет список различных фреймов данных в соответствии со столбцом x. Вы можете взять, например, первый фрейм данных,

result[[1]]
person Zheyuan Li    schedule 04.07.2016