W R potrzebuję podzielić zmienną łańcuchową ramki danych na n zmiennych oddzielonych „->” bez wcześniejszej znajomości liczby nowych zmiennych do utworzenia
Odpowiedzi:
1 dla odpowiedzi № 1Możemy użyć strsplit
aby uzyskać wyjście podzielone na a list
.
lst <- strsplit(df$string, "->")
i wtedy rbind
po dopełnieniu NA na końcu, jeśli list
elementy są nierówne length
.
do.call(rbind, lapply(lst, `length<-`, max(lengths(lst))))
Jeśli musimy podzielić kolumny na tworzenie dodatkowych kolumn, jedną z opcji jest cSplit
od splitstackshape
library(splitstackshape)
cSplit(df, "string", "->")
dane
df <- data.frame(string = c("some->thing->else", "some->thing"), stringsAsFactors=FALSE)