2017-06-15 2 views
0

Ich habe viele große Datenrahmen. Unter Verwendung der kleineren, zum Beispiel:Teilen von großen Daten Rahmen für Spalte in kleinere Datenrahmen (keine Listen) mit Schleifen

dim(ch29) 
476 4283 

muss ich es in kleinere Stücke geteilt (das heißt Teilmenge in 241 Spalten am meisten). Meine Probleme kommen später, wenn ich diese kleineren Teilmengen analysieren möchte.

Ich weiß nicht, wie der nicht einfach eine Listegroßen Datumsrahmen in kleineren Datenrahmen und die Teilmenge.

Ich möchte auch all dies in einer Schleife tun und den neu erstellten kleineren Datenrahmen eindeutige Namen in der Schleife geben. nur von Spalten a zu b

chunk=241 
df<-ch29 
n<-ceiling(ncol(df)/chunk) 

for (i in 1:n) { 
    xname <- paste("ch29", i, sep="_") 
    cat("_", xname) 
    assign(xname, split(df, rep(1:n, each=chunk, length.out=ncol(df)))) 
} 

Antwort

1

for (i in 1:3) { # i = 1 
    xname = paste("ch29", i, sep = "_") 
    col.min = (i - 1) * chunk + 1 
    col.max = min(i * chunk, ncol(df)) 
    assign(xname, df[,col.min:col.max]) 
} 

Mit anderen Worten: Versuchen Sie, verwenden Sie die Schreibweise df[,a:b], wo a < b, bestehend die Teilmenge des Datenrahmen df zu bekommen.

2

Ich bin mir nicht ganz sicher, was Sie versuchen, oder zu tun, wie wollen Sie die Spalten auswählen, die in jedem Datenrahmen gehen, aber hier ist ein Beispiel für eine Möglichkeit:

# Fake data 
set.seed(100) 
ch29 = as.data.frame(replicate(4283, rnorm(476))) 

# Number of columns we want in each split data frame 
ncols = floor(ncol(ch29)/20) 

# Start column for each split data frame 
start = seq(1,ncol(ch29),ncols) 

# Split ch29 into a bunch of separate data frames 
df.list = lapply(setNames(start, paste0("ch29_", start, "_", start+ncols-1)), 
       function(i) ch29[ , i:min(i+ncols-1,ncol(ch29))]) 

Sie sich jetzt eine Liste, df.list, wobei jedes Listenelement ein Datenrahmen mit ncols Spalten von ch29 ist, mit Ausnahme des letzten Elements der Liste, die zwischen 1 und ncols Spalten haben wird. Außerdem ist der Name jedes Listenelements der Name des übergeordneten Datenrahmens (ch29) und der Spaltenbereich, aus dem der Datenblock der Teilmenge gezeichnet wird.

Verwandte Themen