我正在尝试根据每列的总和将数据框中的列分成两个数据帧
以下是我的尝试:
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
答案 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')