[r] 데이터 프레임 전치
큰 데이터 프레임을 전치해야하므로 다음을 사용했습니다.
df.aree <- t(df.aree)
df.aree <- as.data.frame(df.aree)
이것이 내가 얻는 것입니다.
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
내 문제는 첫 번째 행을 열 이름으로 사용해야하므로 제거해야하는 새 열 이름 (10428, 10760, 12148, 11865)입니다.
col.names()
기능을 사용해 보았지만 필요한 것을 얻지 못했습니다.
제안 사항이 있습니까?
편집하다
제안 해 주셔서 감사합니다 !!! 그것을 사용하여 다음을 얻습니다.
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
이제 인자 열의 행 이름 (GS ..)을 변환해야합니다 ….
답변
name 열이있는 동안에는 data.frame을 바꾸지 않는 것이 좋습니다. 그러면 모든 숫자 값이 문자열로 바뀝니다!
다음은 숫자를 숫자로 유지하는 솔루션입니다.
# first remember the names
n <- df.aree$name
# transpose all but the first column (name)
df.aree <- as.data.frame(t(df.aree[,-1]))
colnames(df.aree) <- n
df.aree$myfactor <- factor(row.names(df.aree))
str(df.aree) # Check the column types
답변
df.aree <- as.data.frame(t(df.aree))
colnames(df.aree) <- df.aree[1, ]
df.aree <- df.aree[-1, ]
df.aree$myfactor <- factor(row.names(df.aree))
답변
라이브러리 의 transpose
기능을 사용할 수 있습니다 data.table
. 유지 간단하고 빠른 솔루션 numeric
으로 값을 numeric
.
library(data.table)
# get data
data("mtcars")
# transpose
t_mtcars <- transpose(mtcars)
# get row and colnames in order
colnames(t_mtcars) <- rownames(mtcars)
rownames(t_mtcars) <- colnames(mtcars)
답변
다음을 활용하십시오 as.matrix
.
# keep the first column
names <- df.aree[,1]
# Transpose everything other than the first column
df.aree.T <- as.data.frame(as.matrix(t(df.aree[,-1])))
# Assign first column as the column names of the transposed dataframe
colnames(df.aree.T) <- names