我需要一个简单的任务帮助。
我有一个数据帧28x52,我想制作几个数据帧并重命名每个数据帧。所以它将变成13个28x4数据帧。我知道这可能涉及for
循环,所以我尝试了:
for(i in seq(1,52,4)){
i <- data[,i:i+3]
}
虽然没用。
答案 0 :(得分:2)
以下是3x9源data.frame
的一种方法,我们希望将其子集化为3个3x3 data.frame
s。
m <- data.frame(matrix(1:27, ncol = 9))
lapply(split(sequence(ncol(m)), rep(1:3, each = 3)), function(x) m[, x])
# $`1`
# X1 X2 X3
# 1 1 4 7
# 2 2 5 8
# 3 3 6 9
#
# $`2`
# X4 X5 X6
# 1 10 13 16
# 2 11 14 17
# 3 12 15 18
#
# $`3`
# X7 X8 X9
# 1 19 22 25
# 2 20 23 26
# 3 21 24 27
创建要提取的列的序列,并创建list
的{{1}}。
因此,应用于复制数据结构的东西,您可以使用:
data.frame
答案 1 :(得分:0)
尝试使用list
。例如,快速而肮脏的方式:
N <- 28*52
BigDataFrame <- data.frame(matrix(rnorm(N), nrow=28, ncol=52))
BigList <- NULL
Count <- 0
for (i in seq(1,49,4)) {
Count <- Count + 1
BigList[[Count]] <- BigDataFrame[,i:(i+3)]
}
答案 2 :(得分:0)
# simulate 100x54 data matrix
data <- rnorm(54*100)
data <- matrix(data,100,54)
data <- as.data.frame(data)
# name variables and observations
for (i in 1:54){
colnames(data)[i]<-paste("variable_",i,sep="")
}
for (i in 1:100){
rownames(data)[i]<-paste("observation_",i,sep="")
}
# data structure
head(data)
# data.frame separation loop
counter=0
for(i in seq(1,52,4)){
counter = counter + 1
name <- paste("dataframe_",counter,sep="")
assign(name,data[,i:(i+3)])
}
# what is the class of created objects?
class(dataframe_1)
# check out first sub-data.frame
head(dataframe_1)
您可以在数据框中获取您的信息:dataframe_1,...,dataframe_13
我没试过,但它应该有用。