Я пытаюсь применить цикл for к набору данных.Цикл должен генерировать последовательность для определенного (неравного) числа строк, а затем начинать сначала.Я могу сгруппировать эти строки.Мне удалось написать цикл, который работает для первой из моих групп, но затем останавливается (также выдает кучу предупреждений, «числовое выражение имеет 226 элементов: используется только первый»).Я понял, что это только перебор первой группы, но затем значения, из которых состоит новая переменная, которую я создаю с этим циклом, меняются, и она падает.Может кто-нибудь мне помочь?Я ужасно воссоздаю набор данных, извините!
start <- c(1901, 1902, 1950, 1980, 1980)
end <- c(1905, 1910, 1951, 1999, 1985)
year <- NA
group <- c("apples","apples","apples", "Banana","cherry")
df <- data.frame(start, end, year, group)
df$count <- df$end - df$start
df<- df[rep(rownames(df), df$count +1), ]
Это мой цикл:
for(i in row_along(df)){
df$year[[i]] <- rep(df$start:df$end)[i]
}
Я хочу, чтобы каждая строка имела значение "год" между началом и концом (для каждого года одна строка с одинаковыми значениями, кроме года).У меня неравное количество строк (даты начала и окончания), в зависимости от двух других переменных.Группировка с помощью dplyr не является проблемой, мне удается составить список фреймов данных (с разделением), но это все.Я застрял.
На всякий случай
row_along <- function(df) seq(nrow(df))