在R中将数据帧分为n组数据帧的功能

问题描述 投票:0回答:2

我正在尝试编写一个函数,该函数接受一个数据帧并将其分成多个数据帧,每指定数目的列。例如,如果一个数据框看起来像这样:

df <- data.frame(
x1 = rnorm(1000),
x2 = rnorm(1000),
x3 = rnorm(1000),
x4 = rnorm(1000),
x5 = rnorm(1000),
x6 = rnorm(1000)
)

例如,我想每隔一列对其进行拆分,并将其保存为自己的数据框。所以伪代码看起来像:

function(df){
split df every second column
save each group as it's own unique data frame (named A-C for this example)
}

最终结果将意味着我有3个数据帧,其中数据帧A有两列(即x1,x2),类似地B有两列(x3,x4),C有两列(x5,x6)。

关于如何实现此目标的任何建议?

r
2个回答
0
投票

我们可以使用split.default

split.default(df, gl(ncol(df)/2, 2))

0
投票

我们可以使用split.default分成两列,每列分为list

lst1 <- split.default(df, LETTERS[as.integer(gl(ncol(df), 2, ncol(df)))])

然后使用write.csv保存数据集>

lapply(names(lst1), function(x) write.csv(lst[[x]], paste0(x, ".csv")))
© www.soinside.com 2019 - 2024. All rights reserved.