【发布时间】:2019-02-13 19:48:11
【问题描述】:
我正在尝试将 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))
【问题讨论】: