2016-07-04 2 views
-1

Скажем, у меня есть большой фрейм данных в длинном формате, каждый из которых занимает 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 отдельных объектов с разными именами.

ответ

1

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

result <- split(df, df$x) 

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

result[[1]]