Entschuldigung, wenn dies offensichtlich ist, habe ich etwas gefunden, wenn es einen Index gibt oder für, wenn Spalten fehlen. Aber ich glaube nicht, dass es funktionieren wird.machen Datenrahmen durch die Kombination von Spalten mit Listen mit fehlenden Daten, strsplit, ohne Index
Beispieldaten:
df.test=data.frame(A=c("n,n,y,n" ,"t", "j,k,k")
,B=c("n,y,y,n" ,"" , "k,k,k")
,C=c("n,y,y,n,n","t", "j,k,j")
,D=c("" ,"" , "k,k,j")
)
df.test=lapply(df.test, function(x) as.character(x))
str(df.test) # looks similar to my data
List of 4
$ A: chr [1:3] "n,n,y,n" "t" "j,k,k"
$ B: chr [1:3] "n,y,y,n" "" "k,k,k"
$ C: chr [1:3] "n,y,y,n,n" "t" "j,k,j"
$ D: chr [1:3] "" "" "k,k,j"
Mein Ziel ist ein Datenrahmen:
A B C D
n n n NA
n y y NA
y y y NA
n n n NA
t NA t NA
j k j k
k k k k
k k j j
I Spalte A möchte die Referenz sein, aber es ist nicht eindeutige Werte hat. Es hat jedoch die maximale Anzahl von Werten erlaubt von jeder Liste (ich hoffe, dass das Sinn macht). Daher sollte der fünfte Wert in C-Liste 1 fallen gelassen werden, dh n y y n n -> n y y n
. Auch fehlende Werte müssen hinzugefügt werden (fehlt laut Spalte A
). Der zusätzliche Wert in C
ist ein Fehler von anderer Software (auf die ich keinen Einfluss habe). Anders als diese zusätzlichen Werte entsprechen sie einander, zB sollten die t's in der gleichen Reihe sein (falls vorhanden).
Das Beste, was ich bis jetzt getan habe, ist eine Liste von Vektoren zu machen, die Listen haben unterschiedliche Längen, also kann ich sie nicht zusammensetzen und sie entsprechen nicht.
df3=lapply(df.test, function(x) unlist(strsplit(x,',')))
str(df3)
List of 4
$ A: chr [1:8] "n" "n" "y" "n" ...
$ B: chr [1:7] "n" "y" "y" "n" ...
$ C: chr [1:9] "n" "y" "y" "n" ...
$ D: chr [1:3] "k" "k" "j"
Wow. Ich bin weit davon entfernt, so etwas zu finden. Arbeitete an den Beispieldaten und an den tatsächlichen Daten. Ich habe es geschafft, dass eine verschachtelte Schleife funktioniert, aber ich bin froh, dass ich sie nicht verwenden muss. Danke vielmals. – john