5
W poniższym dataframe Chcę utworzyć nową zmienną jako następującą funkcją wszystkich istniejących:dplyr: Tworzenie nowej zmiennej w funkcji wszystkich istniejących zmiennych bez określenia ich nazwy
as.numeric(paste0(df[i,],collapse=""))
Jednak ja nie chcemy jawnie definiować nazw kolumn, ponieważ ich liczba i nazwy mogą być za każdym razem inne. Jak mogę to zrobić za pomocą dplyr?
Równowartość w zasady R byłoby coś takiego:
apply(df,1,function(x) as.numeric(paste0(x,collapse="")))
df <- structure(list(X1 = c(50, 2, 2, 50, 5, 5, 2, 50, 5, 5, 50, 2,
5, 5, 50, 2, 2, 50, 9, 9, 9, 9, 9, 9), X2 = c(2, 50, 5, 5, 50,
2, 5, 5, 50, 2, 2, 50, 9, 9, 9, 9, 9, 9, 50, 2, 2, 50, 5, 5),
X3 = c(5, 5, 50, 2, 2, 50, 9, 9, 9, 9, 9, 9, 50, 2, 2, 50,
5, 5, 2, 50, 5, 5, 50, 2), X4 = c(9, 9, 9, 9, 9, 9, 50, 2,
2, 50, 5, 5, 2, 50, 5, 5, 50, 2, 5, 5, 50, 2, 2, 50)), class = "data.frame", .Names = c("X1",
"X2", "X3", "X4"), row.names = c(NA, -24L))
Czy 'df%>% mutate (newcol = as.numeric (do.call (paste0, df)))' czego szukasz? W każdym razie odpowiednik w 'base' R nie jest tym, co wskazałeś, ale' as.numeric (do.call (paste0, df)) '(znacznie bardziej efektywny). – nicola
Tak, dziękuję! Możesz użyć . zamiast df wewnątrz wklej: df%>% mutate (newcol = do.call (paste0,)). Przyjmę to jako odpowiedź. – Brani