Vielleicht ist das ein bisschen wählerisch, aber ich würde gerne eine elegante Möglichkeit finden, mehrere Spalten von Strings in einem Datenrahmen aufzuteilen. Zum Beispiel erhalte ich oft Daten aus Excel, wo die Einheiten in den gleichen Zellen wie die Werte sind, wie folgt aus:Effiziente Aufteilung mehrerer Zeichenvektoren in einem Datenrahmen in R
df <- data.frame(A = paste(round(runif(5) * 10), "KG", sep = " "),
B = paste(round(runif(5) * 10), "KG", sep = " "),
C = paste(round(runif(5) * 10), "KG", sep = " "))
df
A B C
1 1 KG 9 KG 7 KG
2 8 KG 1 KG 10 KG
3 7 KG 8 KG 6 KG
4 5 KG 6 KG 9 KG
5 3 KG 2 KG 9 KG
Von hier aus sind die Einheiten müssen getrennt und gespeichert werden. Typischerweise ich etwas wie folgt aus:
df2 <- as.data.frame(apply(df, 2,
function(x) as.numeric(lapply(strsplit(as.character(x),
split = " ", fixed = TRUE), "[", 1))))
df3 <- as.data.frame(apply(df, 2,
function(x) as.character(lapply(strsplit(as.character(x),
split = " ", fixed = TRUE), "[", 2))))
df4 <- cbind(df2, df3)
df4
A B C A B C
1 1 9 7 KG KG KG
2 8 1 10 KG KG KG
3 7 8 6 KG KG KG
4 5 6 9 KG KG KG
5 3 2 9 KG KG KG
Es funktioniert, aber ist ein Streit zu implementieren. Gibt es eine bessere Lösung für diese Art von Problem?
Das ist viel schneller und weniger kompliziert. Vielen Dank! – hubbs5