将数据帧拆分为块并将名称从向量分配给块

时间:2016-01-08 10:22:21

标签: r

我有一个5 * n列的数据框,其中n是向量中列出的类别数。我想将数据框分成5列的块(例如,类别1是列1:5,类别2是列6:10)然后将类别名称从向量分配给块。

例如。

*original data frame*              *vector of category names*
X a b c d e a b c d e a b c d e    1 apples
1 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0    2 oranges
2 0 1 0 1 0 0 0 1 0 1 1 0 0 0 1    3 bananas

将成为

*apples*       *oranges*     *bananas*
X a b c d e    X a b c d e   X a b c d e 
1 1 0 0 0 1    1 0 1 0 1 0   1 0 0 1 1 0 
2 0 1 0 1 0    2 0 0 1 0 1   2 1 0 0 0 1

我可以找到关于按行拆分data.frames的大量信息,这是更常见的事情,但是我无法通过 columns <找到将数据帧拆分为n个块的任何信息/ em>的。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以按列索引分割您的original_data_frame:

df <- read.table(header=T, check.names = F, text="
X a b c d e a b c d e a b c d e
1 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0
2 0 1 0 1 0 0 0 1 0 1 1 0 0 0 1")
n <- 5 # fixed chunksize (a-e)
lst <- lapply(split(2:ncol(df), rep(seq(ncol(df[-1])/n), each=n)), function(x) df[, x])
names(lst) <- c("apples", "oranges", "bananas")
# lst
# $apples
#   a b c d e
# 1 1 0 0 0 1
# 2 0 1 0 1 0
# 
# $oranges
#   a b c d e
# 1 0 1 0 1 0
# 2 0 0 1 0 1
# 
# $bananas
#   a b c d e
# 1 0 0 1 1 0
# 2 1 0 0 0 1

我不知道这是否优雅,但首先我想到了。