Функция для разделения фрейма данных на сегменты в R

Я работаю с большим набором данных, который имеет столбец времени и столбец скорости ветра. Мне нужно найти способ разделить фрейм данных на более мелкие сегменты, основанные на временном столбце. если мой фрейм данных

hrmin    wind
1100     x1
1100     x2
1100     x3
1101     x4
1101     x5
1101     x6
1102     x7
1102     x8
1102     x9
1103     x10
1103     x11
1103     x12

Мне нужна функция, чтобы разделить ее на более мелкие сегменты, а затем вывести эти сегменты. Если бы я хотел разделить его на два сегмента, то мой результат

df1
1100     x1
1100     x2
1100     x3
1101     x4
1101     x5
1101     x6

df2
1102     x7
1102     x8
1102     x9
1103     x10
1103     x11
1103     x12

Если мне нужно вывести четыре кадра данных, то я бы

df1
1100     x1
1100     x2
1100     x3

df2
1101     x4
1101     x5
1101     x6

df3
1102     x7
1102     x8
1102     x9

df4
1103     x10
1103     x11
1103     x12

Я полагаю, что мне нужна функция, которая включает в себя split() и subset(), но я не уверен, как ее построить. Я думаю что-то вроде

function( full data frame,number of segments I need) {

split(full data frame, subset(time segments))
return(appropriate amount of smaller data frames)

}

Есть ли способ сделать это или что-то лучше, чем сделать функцию? Я нашел способы показать меньшие фреймы данных, но в идеале я хотел бы, чтобы они возвращались с такими именами, как df1, df2, df3... чтобы я мог работать с ними индивидуально после того, как они выведут

1 ответ

Это очень похоже на ответ @akrun (возможно, в настоящее время удален):

library(data.table)
setDT(DT)

DT[, g := .GRP, by=hrmin]
split(DT, findInterval(
  DT$g, 
  seq(1, uniqueN(DT$hrmin), length.out = n + 1), 
  rightmost.closed = TRUE 
))

Он разделяет группы по порядку, просто основываясь на количестве групп (и игнорируя количество строк в каждой группе). Вы можете варьироваться n чтобы увидеть, как это работает. Это просто, чтобы поместить это в функцию. Это также не трудно сделать это без data.table; это просто используется здесь для его хороших ярлыков:

  • uniqueN(DT$hrmin) количество значений для группирующей переменной
  • .GRP, by=hrmin является идентификатором для переменной группировки, считая 1..uniqueN(DT$hrmin),
Другие вопросы по тегам