Home > Software engineering >  Split data frame by decreasing number of rows in R
Split data frame by decreasing number of rows in R

Time:04-13

I have a data frame:

dates <- seq.Date(from = as.Date("2005/01/01"), to = as.Date("2022/01/01"), by = 'years')
myvar <- rnorm(n = length(dates))
mydata <- cbind.data.frame(dates, myvar)

I want to split this data from into 18 different data frames (given by the number of rows). The first data frame would contain all 18 rows, the second data frame would contain rows 2:18, the third would contain rows 3:18, and so. The final data frame would contain only the 18th row.

CodePudding user response:

out <- lapply(rev(seq_len(nrow(mydata))), tail, x = mydata)
out[[1]]
#         dates        myvar
# 1  2005-01-01 -1.626973680
# 2  2006-01-01  0.540752205
# 3  2007-01-01 -1.513774595
# 4  2008-01-01  0.710279918
# 5  2009-01-01 -0.150721031
# 6  2010-01-01 -0.905366141
# 7  2011-01-01  0.494374069
# 8  2012-01-01 -0.489290540
# 9  2013-01-01 -0.784882029
# 10 2014-01-01 -1.046514324
# 11 2015-01-01 -0.086859898
# 12 2016-01-01 -0.001513102
# 13 2017-01-01  0.002866734
# 14 2018-01-01 -2.262867978
# 15 2019-01-01 -0.787750551
# 16 2020-01-01  0.557968261
# 17 2021-01-01  0.514520082
# 18 2022-01-01 -1.004364925
out[17:18]
# [[1]]
#         dates      myvar
# 17 2021-01-01  0.5145201
# 18 2022-01-01 -1.0043649
# [[2]]
#         dates     myvar
# 18 2022-01-01 -1.004365
  • Related