Как разбить фреймы данных в R - PullRequest
1 голос
/ 26 апреля 2020

У меня есть этот фрейм данных, и я застрял, пытаясь разделить их на другие наборы данных в зависимости от года. Например, «2020, 2021»

Например: «2020» ВСЕ 2020 года значения

«2021» ВСЕ 2021 года значения Я назвал его: Набор данных

Date    Left    Right   Up  Down  Middle  Size
1/1/2020    1   1   2   2   2   2
2/1/2020    1   7   8   9   8   8
3/1/2020    2   3   4   6   7   8
1/1/2021    1   2   2   2   2   7
2/1/2021    1   7   8   9   8   8
3/1/2021    2   3   4   6   7   8

Im все еще очень новичок в R и просто возникают проблемы с удалением данных. Если кто-то может помочь, я прощаю благодарность

1 Ответ

4 голосов
/ 26 апреля 2020

Вы можете извлечь год от даты, а затем использовать split, чтобы получить список данных для каждого года.

output <- split(df, format(as.Date(df$Date, "%d/%m/%Y"), "%Y"))
output
#$`2020`
#      Date Left Right Up Down Middle Size
#1 1/1/2020    1     1  2    2      2    2
#2 2/1/2020    1     7  8    9      8    8
#3 3/1/2020    2     3  4    6      7    8

#$`2021`
#      Date Left Right Up Down Middle Size
#4 1/1/2021    1     2  2    2      2    7
#5 2/1/2021    1     7  8    9      8    8
#6 3/1/2021    2     3  4    6      7    8

Этого также можно добиться с помощью функций lubridate.

library(lubridate)
output <- split(df, year(dmy(df$Date)))

данные

df <- structure(list(Date = c("1/1/2020", "2/1/2020", "3/1/2020", "1/1/2021", 
"2/1/2021", "3/1/2021"), Left = c(1L, 1L, 2L, 1L, 1L, 2L), Right = c(1L, 
7L, 3L, 2L, 7L, 3L), Up = c(2L, 8L, 4L, 2L, 8L, 4L), Down = c(2L, 
9L, 6L, 2L, 9L, 6L), Middle = c(2L, 8L, 7L, 2L, 8L, 7L), Size = c(2L, 
8L, 8L, 7L, 8L, 8L)), class = "data.frame", row.names = c(NA, -6L))
...