# Create some sample data. dates <- seq(as.Date("2015/5/1"), as.Date("2015/6/30"), length.out=100) values <- sample(1:100, length(dates)) # Create a data.frame of data. data <- data.frame(Date = dates, Value = values) # Split by day. dataByDay <- split(data, data$Date) # Get list of data counts and sum per day. # Method 1. dataCountsByDay1 <- data.frame() x <- sapply(dataByDay, function(r) { df <- data.frame(r) row <- data.frame(Count = nrow(df), Total = sum(df$Value), Date = df[1,]$Date) dataCountsByDay1 <<- rbind(dataCountsByDay1, row) }) # Get list of data counts and sum per day. # Method 2. dataCountsByDay2 <- as.data.frame(t(sapply(dataByDay, function(r) { df <- data.frame(r) c(Count = nrow(df), Total = sum(df$Value)) }))) dataCountsByDay2$Date <- as.Date(row.names(dataCountsByDay2)) # Verify they're both equivalent. dataCountsByDay1$Count == dataCountsByDay2$Count dataCountsByDay1$Total == dataCountsByDay2$Total as.character(dataCountsByDay1$Date) == as.character(dataCountsByDay2$Date) nrow(dataCountsByDay1) == nrow(dataCountsByDay2)