2016-01-08 108 views
0

我有一個包含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,這是更爲常見的做的信息,但我不能找到一個分裂的任何數據幀由分成n個塊。謝謝!

回答

0

您可以通過列索引similarely分割你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 

我不知道這是不是優雅,但它來到我的腦海裏,第一次。