R中循环的rbind内部嵌套
我需要创建不同的数据帧,在for循环中使用rbind存储不同的数据帧,每个I对应一个 这里有一个例子:R中循环的rbind内部嵌套,r,loops,rbind,R,Loops,Rbind,我需要创建不同的数据帧,在for循环中使用rbind存储不同的数据帧,每个I对应一个 这里有一个例子: library(lubridate) DATA <- data.frame("ID"=c("01","01","02","02","03","03","03","04","04",
library(lubridate)
DATA <- data.frame("ID"=c("01","01","02","02","03","03","03","04","04","04","05","05","05","06","06","06"),"x"=c("2009","2012","2013","2009","2012","2011","2013","2009","2010","2010","2011","2010","2009","2010","2011","2013"),"y"=c("a","a","a","b","c","a","a","c","b","b","c","a","c","a","b","c"))
one <- c("a","b","c")
two <- c("2009","2010","2011","2012")
listofdfs <- list()
for (i in one) {
for (j in 1:(length(two)-1)) {
B <- NULL
A <- DATA[DATA$x %in% c(two[j],two[j+1]) & DATA$y==i ,]
# keep the oldest date
tmp<-as.Date(A$x,"%Y-%m-%d")
if (length(tmp)>0)
{
A$tag <- 0
names(tmp)<-1:nrow(A)
id_x <- as.numeric(tapply(tmp[year(tmp)>two[j]],A$ID[year(tmp)>two[j]],function(x){
id <- which.min(x)
names(x)[id]
}))
A$tag[id_x] <- 1
}
# aggregate datasets over different years
B <- rbind(B,A)
}
listofdfs[[i]] <- B
}
因为覆盖(我不希望),所以2010不存在
有什么想法吗?谢谢 你在哪里写作
for(一合一){
对于(j/1:(长度(二)-1)){
B我写的示例代码中有错误。现在它工作了。你能解释一下你想做什么吗?我在{}中只写了一部分代码,所以你可能不理解我的目标。无论如何,我想从数据中提取一个子集(a),首先隔离2009和2010,然后是2010和2011,然后是2011和2012等等。然后我将在(这里我没有报告我所有的代码),我将只选择一些ID。然后我想在B中绑定所有这些子集(A),但我希望每个I都有一个不同的B(“A”、“B”、“c”).更清楚吗?重点是在B中,所有创建的A都被覆盖,而在B中,我只能看到最后创建的A。为什么被覆盖?好的。我相信问题在于你有B
$a
ID x y tag
2 01 2012 a 0
6 03 2011 a 0
$b
ID x y tag
15 06 2011 b 0
$c
ID x y tag
5 03 2012 c 0
11 05 2011 c 0