我有以下数据框:
df <- data.frame(a=rep(1:3),b=rep(1:3),c=rep(4:6),d=rep(4:6))
df
a b c d
1 1 1 4 4
2 2 2 5 5
3 3 3 6 6
我想要一个矢量N来确定我的窗口大小,因此我将设置
N <- 1
我想将此数据帧拆分为N行的相等部分,并将3个结果数据帧存储到列表中。
我有以下代码:
groupMaker <- function(x, y) 0:(x-1) %/% y
testlist2 <- split(df, groupMaker(nrow(df), N))
问题是此代码通过在前面添加X0.
来重命名我的列名称
result <- as.data.frame(testlist2[1])
result
X0.a X0.b X0.c X0.d
1 1 1 4 4
>
我想要一个完全相同的代码但保留列名称的代码。请记住,我的原始数据有超过3行,所以我需要一些适用于更大的数据帧的东西。
答案 0 :(得分:2)
要提取list
元素,我们可以使用[[
。此外,由于每个list
元素均为data.frame
,因此我们无需再次明确调用as.data.frame
。
testlist2[[1]]
我们也可以使用gl
创建分组变量。
split(df, as.numeric(gl(nrow(df), N, nrow(df))))