R 如何合并长度不等但块长度已知的数据帧?
我有一个模型,其中个体可以死亡和繁殖。我以设定的间隔记录模型中的信息。我知道个体的身份和我从中取样的迭代次数:R 如何合并长度不等但块长度已知的数据帧?,r,dataframe,R,Dataframe,我有一个模型,其中个体可以死亡和繁殖。我以设定的间隔记录模型中的信息。我知道个体的身份和我从中取样的迭代次数: df1<-data.frame( who= c(1,2,3,4,1,2,3,3,5), iteration = c(1,1,1,1,2,2,2,3,3) ) df1 这里,我们将基于%%创建的分组索引的“值”列拆分为向量的列表,然后通过指定长度cbind(df1,split),在列表元素末尾添加NA(如果元素数量较少)(df2$值,(沿(df2$值)-1的顺序)%%2+1)谢谢
df1<-data.frame(
who= c(1,2,3,4,1,2,3,3,5),
iteration = c(1,1,1,1,2,2,2,3,3)
)
df1
这里,我们
将基于%%
创建的分组索引的“值”列拆分为向量的列表,然后通过指定长度cbind(df1,split),在列表元素末尾添加NA
(如果元素数量较少)(df2$值,(沿(df2$值)-1的顺序)%%2+1)
谢谢。你能解释一下代码在做什么吗?如果个人有>2个与他们相关的值,我该如何扩展此功能?lst有效,我只需将“2”改为感兴趣的数字,并在末尾删除一个额外的括号。将其作为完整答案放下来,我可以将其标记为解决方案。再次感谢。
df2 <- data.frame(values=c(1,1, # id = 1
1,2, # id = 2
2,1, # id = 3
0,0, # id = 4
1,1, # id = 1
1,2, # id = 2
2,1, # id = 3
2,1, # id = 3
0,0)) # id = 5
df2
df3 <- split(df2$values, ceiling(seq_along(df2$values)/2))
who iteration value1 value2
1 1 1 1
2 1 1 2
3 1 2 1
4 1 0 0
1 2 1 1
2 2 1 2
3 2 2 1
3 3 2 1
5 3 0 0
lst <- split(df2$values, (seq_along(df2$values)-1) %% 2 +1)
m1 <- do.call(cbind, lapply(lst, "length<-", max(lengths(lst))))
cbind(df1, m1)