Muszę przetransponować dużą ramkę danych, więc użyłem:
df.aree <- t(df.aree)
df.aree <- as.data.frame(df.aree)
Oto, co otrzymałem:
df.aree[c(1:5),c(1:5)]
10428 10760 12148 11865
name M231T3 M961T5 M960T6 M231T19
GS04.A 5.847557e+03 0.000000e+00 3.165891e+04 2.119232e+04
GS16.A 5.248690e+04 4.047780e+03 3.763850e+04 1.187454e+04
GS20.A 5.370910e+03 9.518396e+03 3.552036e+04 1.497956e+04
GS40.A 3.640794e+03 1.084391e+04 4.651735e+04 4.120606e+04
Moim problemem są nowe nazwy kolumn (10428, 10760, 12148, 11865), które muszę wyeliminować, ponieważ muszę użyć pierwszego wiersza jako nazw kolumn.
Próbowałem z col.names()
funkcją, ale nie otrzymałem tego, czego potrzebowałem.
Czy masz jakieś sugestie?
EDYTOWAĆ
Dzięki za Twoją sugestię!!! Korzystając z niej otrzymuję:
df.aree[c(1:5),c(1:5)]
M231T3 M961T5 M960T6 M231T19
GS04.A 5.847557e+03 0.000000e+00 3.165891e+04 2.119232e+04
GS16.A 5.248690e+04 4.047780e+03 3.763850e+04 1.187454e+04
GS20.A 5.370910e+03 9.518396e+03 3.552036e+04 1.497956e+04
GS40.A 3.640794e+03 1.084391e+04 4.651735e+04 4.120606e+04
GS44.A 1.225938e+04 2.681887e+03 1.154924e+04 4.202394e+04
Teraz muszę przekształcić nazwy wierszy (GS ..) w kolumnie współczynnika ....
colnames(df.aree)<-df.aree[1,];df.aree<-df.aree[2:nrow(df.aree),]
?t
Tworzenie ramki danych jest również dość nieefektywne. Jeśli możesz, użyj matrix.Odpowiedzi:
Lepiej nie transponuj data.frame, gdy znajduje się w niej kolumna nazwy - wszystkie wartości liczbowe zostaną zamienione na łańcuchy!
Oto rozwiązanie, które zachowuje liczby jako liczby:
źródło
źródło
Możesz użyć
transpose
funkcji zdata.table
biblioteki. Proste i szybkie rozwiązanie, które zachowujenumeric
wartości jaknumeric
.źródło
setnames(t_mtcars, rownames(mtcars))
byłbydata.table
-sposób ustawiania nazw w data.table (a jeśli używaszdata.table
obiektu nie ustawiałbyś tegorownames
)Skorzystaj z
as.matrix
:źródło