R: loop through data frame extracting subset of data depending on date
Solution 1
is this what you want ?
df_list <- split(data, as.factor(data$date))
Solution 2
Loop through each unique date and build the subset.
uniq <- unique(unlist(data$Date))
for (i in 1:length(uniq)){
data_1 <- subset(data, date == uniq[i])
#your desired function
}
Solution 3
After sub-setting your dataset by date, imagine that the function you would like to apply to each subset is to find the mean of the column x
. You could do it this way: (df is your dataframe)
library(plyr)
ddply(df, .(date), summarize, mean = mean(x))
userk
Updated on July 09, 2022Comments
-
userk almost 2 years
I have a large data frame that consists of data that looks something like this:
date w x y z region 1 2012 01 21 43 12 3 NORTH 2 2012 02 32 54 21 16 NORTH 3 2012 03 14 32 65 32 NORTH 4 2012 04 65 33 75 21 NORTH : : : : : : : : : : : : : : 12 2012 12 32 58 53 17 NORTH 13 2012 01 12 47 43 23 SOUTH 14 2012 02 87 43 21 76 SOUTH : : : : : : : 25 2012 01 12 46 84 29 EAST 26 2012 02 85 29 90 12 EAST : : : : : : : : : : : : : :
I want to extract section of the data that have the same
date
value, for example to do this just for2012 01
I would just create a subset of datadata_1 <- subset(data, date == "2012 01")
and this gives me all the data for
2012 01
but I then go on to apply a function to this data. I would like to be able to apply my function to all possible subsets of my data, so ideally I would be looping through my large data frame and extracting the data for2012 01, 2012 02, 2012 03, 2012 04...
and applying a function to each of these subsets of data separately.But I would like to be able to apply this to my data frame even if my data frames length were to change, so it may not always go from
2012 01 - 2012 12
, the range of dates may vary so that sometimes it may be used on data from for example2011 03 - 2013 01
. -
userk over 10 yearsthis is perfect! Such a simple answer for something I thought would be much more complex, thank you
-
BlackHat almost 9 yearsWill each subset have a unique name? From what I see you're going to end up putting each subset in one dataframe. Thx
-
TylerDurden almost 9 yearsno each loop will just overwrite
data_1
and then the user can apply whatever function to the dataframe and choose themselves where to store the results. -
Polar Bear over 7 years@TylerDurden . It looks what I need. What if I want to make subsets based both on region and date? e.g. data_1 <- subset(data, date == "2012 01" & "North")
-
TylerDurden over 7 years@PolarBear thats a new question. Just google it and the answer is straightforward google.com/#safe=active&q=subset+data+r+2+conditions
-
Jerry T over 7 yearsdoes not seem to work. missing FUN parameter for the by()