В основном у меня есть большой временной интервал данных в течение нескольких дней. Я написал код, который работает в течение одного дня в кадре данных, но теперь я хочу адаптировать его так, чтобы он работал в течение всех дней. Для каждого дня в моем кадре данных есть столбец, содержащий время восхода солнца для этого дня и одно, содержащее закат. Я хочу использовать эти времена для разделения каждый день на дневные часы и ночные часы. Мой восход закат колонки выглядят так и различны для каждого дня:Написание функции для привязки к большому списку
Sunrise Sunset
2010-01-19 08:55:12 2010-01-19 17:26:34
я использовал раскол разделить кадр данных по дате, чтобы дать большой список, содержащий 10 элементов (дни)
# Splits data frame by date
sepdays<- split(df, df$Date)
# Function to split each day into day and night hours
daynight <- function(){
rise <- as.character(df$Sunrise[1])
rise <- substr(rise, 12,19)
set <- as.character(df$Sunset[1])
set <- substr(set, 12,19)
day <- df[df$Time>rise & df$Time<set, ]
df.night1<-df[df$Time<rise,]
df.night2<-df[df$Time>set,]
night <- merge.data.frame(df.night1,df.night2, sort = TRUE, all.x = TRUE, all.y=TRUE)
return(table(day$Activity))
}
# Apply function over list of days
lapply(sepdays,daynight)
Когда я бег lapply я получаю неиспользованные аргументы ошибку:
Error in FUN(X[[1L]], ...) : unused argument (X[[1]])
Я также не уверен, что это лучший способ идти о получении определенного времени восхода/наборе для каждого согласующего дня. Я понимаю, что у моей функции нет аргументов, но я новичок R, поэтому не совсем уверен, что я делаю.
Вот как выглядят мои данные.
Date Time Activity Sunrise Sunset
2010-01-19 23:58:00 1 2010-01-19 08:55:12 2010-01-19 17:26:34
2010-01-19 23:59:00 1 2010-01-19 08:55:12 2010-01-19 17:26:34
2010-01-19 00:00:00 0 2010-01-20 08:54:13 2010-01-20 17:28:11
2010-01-19 00:01:00 0 2010-01-20 08:54:13 2010-01-20 17:28:11
2010-01-20 00:02:00 1 2010-01-20 08:54:13 2010-01-20 17:28:11
2010-01-20 00:03:00 0 2010-01-20 08:54:13 2010-01-20 17:28:11
2010-01-20 00:04:00 1 2010-01-20 08:54:13 2010-01-20 17:28:11
Я хотел бы мой выводе содержать для каждой даты таблицы деятельности, например:
2010-01-19
1 0
2 0
2010-01-20
1 0
2 3
Вы пытаетесь изобрести колесо. Используйте средства и пакеты времени и времени R, такие как plyr, dplyr или data.table. Если вы четко сформулируете свою конечную цель и добавите примерные данные (например, используйте 'dput (head (df))') в свой вопрос, кто-то должен показать вам, как это сделать легко. – Roland
Каковы ваши выходные таблицы вывода, связанные с вводом примера? – Roland
В течение каждого дня должна быть указана таблица значений активности. То есть общее количество 1s и общее количество 0s за каждый день. – user3021648