Ответ 1
Вам нужно указать все факторы, которые вы хотите разбить в списке, например:
split(mtcars,list(mtcars$cyl,mtcars$gear))
Затем вы можете использовать lapply
для этого, чтобы сделать то, что еще вы хотите сделать.
Я хочу разбить большой фрейм данных в список данных в соответствии со значениями в двух столбцах. Затем я хочу применить общее преобразование данных для всех фреймов данных (преобразование лаг) в результирующий список. Я знаю команду split, но могу заставить ее работать только с одним столбцом данных.
Вам нужно указать все факторы, которые вы хотите разбить в списке, например:
split(mtcars,list(mtcars$cyl,mtcars$gear))
Затем вы можете использовать lapply
для этого, чтобы сделать то, что еще вы хотите сделать.
как насчет этого:
library(plyr)
ddply(df, .(category1, category2), summarize, value1 = lag(value1), value2=lag(value2))
кажется отличным заданием для пакета plyr
и ddply()
. Если есть все еще открытые вопросы, пожалуйста, предоставьте некоторые примеры данных. Разделение должно работать и на нескольких столбцах:
df<- data.frame(value=rnorm(100), class1=factor(rep(c('a','b'), each=50)), class2=factor(rep(c('1','2'), 50)))
g <- c(factor(df$class1), factor(df$class2))
split(df$value, g)