2017-11-28 3 views
1

Ich habe eine Liste von Datenrahmen, die wie folgt aussieht:Extract Teil Dateinamen und fügen Sie sie in eine Datenrahmen Liste

enter image description here

Ich habe Dateinamen wie folgt aus:

testlist 
"Folder1/AT0ILL10000700500dymax.1-1-1990.31-12-2011"  
"Folder1/CH0001A0000700100dymax.1-1-1992.31-12-2007" 
"Folder1/CH0005A0000700500dymax.1-1-1992.31-12-2011" 

ich gelesen die Daten mit diesem Befehl.

data_list = lapply(testlist, read.table) 

Jetzt möchte ich einen Teil des Dateinamens extrahieren und fügen Sie es in den Datenrahmen als V6. Dies sind die Teile, die ich extrahieren möchte.

AT0ILL1 
CH0001A 
CH0005A 

So wäre dies die 9-15 Buchstaben, und in dem ersten Datenrahmen [1] enthalten würde nur 6 mal "AT0ILL1" in der letzten neuen Spalte [[2]] würde nur "CH0001A" seine in V6 und in [[3]] nur "CH0005A".

Ich kann es zum Beispiel tun mit nur einer Datei mit:

substr(name, 9, 15) 

Aber wie kann ich es tun mit allen Dateien (in Wirklichkeit, die ich mehr als 1000 haben)?

Hier ist der Code von meinem Testframe von Anfang an.

V1= c("20000608", "20000609", "20000610", "20000611", "20000612", "20000613") 
V2= seq(5, 30, length=6) 
V3= rep(c(-1,0,1), times=2) 
V4= seq(10, 60, length=6) 
V5= rep(c(1,-1,0), times=2) 

testframe1 = data.frame(V1, V2, V3, V4, V5) 

x1= c("20030608", "20100609", "20060610", "20040611", "20009612", "20002613") 
x2= seq(4, 80, length=6) 
x3= rep(c(0,-1,1), times=2) 
x4= seq(3, 60, length=6) 
x5= rep(c(-1,1,0), times=2) 

testframe2 = data.frame(V1=x1, V2=x2, V3=x3, V4=x4, V5=x5) 

a1= c("20030602", "20100606", "20060610", "20040511", "20007612", "20002624") 
a2= seq(7, 133, length=6) 
a3= rep(c(-1,0,1), times=2) 
a4= seq(9, 47, length=6) 
a5= rep(c(1,0,-1), times=2) 

testframe3 = data.frame(V1=a1, V2=a2, V3=a3, V4=a4, V5=a5) 

list = list(testframe1, testframe2, testframe3) 

Antwort

1

Was ist mit einfachen for Lösung?

# I assume that: 
# - testlist is a vector that contains filenames 
# - df.list is a list of dataframes (in the example named list) 
for(i in 1:3){ 
    df.list[[i]]$V6 <- substr(testlist[i], 9, 15) 
} 
+0

Ok! Vielen Dank! Das war sooo einfach! Ich wollte das tun, während ich die Daten einlese ... es ist viel einfacher so. Danke vielmals! – Essi

Verwandte Themen