按列将数据框拆分为两个组

时间:2015-11-05 23:28:28

标签: r

我正在尝试根据每列的总和将数据框中的列分成两个数据帧

以下是我的尝试:

 sum_each_col <- apply(originalDF,2,sum)
 ave_sum <- mean(sum_each_col)

 col_k1 <- data.frame()
 col_k2 <- data.frame()

 apply(originalDF,2,function(x){
 if(sum(x) <=ave_sum){
    cbind(col_k1,as.data.frame(x))
  }
 else {
    cbind(col_k2,as.data.frame(x))
  }
 }
 ) 

原创DF:

 col1 col2 col3 col4 col5
A  1   2    1    2    2
B  1   2    1    2    2  
C  1   2    1    2    2

期望输出:     col_k1:

   col1 col3 
 A  1     1    
 B  1     1     
 C  1     1    

col_k2:

    co2 col4 col5
  A  2    2    2
  B  2    2    2 
  C  2    2    2

1 个答案:

答案 0 :(得分:3)

你可以尝试:

#there is a function colMeans that calculates the mean of each column
index <- colMeans(DF) < mean(colMeans(DF))

然后:

> DF[index]
  col1 col3
A    1    1
B    1    1
C    1    1

> DF[!index]
  col2 col4 col5
A    2    2    2
B    2    2    2
C    2    2    2

数据:

DF <- read.table(header=T, text=' col1 col2 col3 col4 col5
A  1   2    1    2    2
B  1   2    1    2    2  
C  1   2    1    2    2')