반응형
데이터 프레임 전치
큰 데이터 프레임을 전환해야 하기 때문에 다음을 사용했습니다.
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...)을 변환해야 합니다.
이름 열이 있는 동안에는 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
사용할 수 있습니다.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)
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))
이점 활용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
tidyr을 사용하면 데이터 프레임을 "pivot_longer"와 "pivot_wider"로 바꿀 수 있습니다.
널리 사용되는 mtcar 데이터 집합을 바꾸려면 먼저 행 이름을 열로 변환해야 합니다("rowname"이라는 이름의 새 열이 rowname_to_column 함수).
library(tidyverse)
mtcars %>%
rownames_to_column() %>%
pivot_longer(!rowname, names_to = "col1", values_to = "col2") %>%
pivot_wider(names_from = "rowname", values_from = "col2")
전치 행렬에 다른 이름을 지정할 수 있습니다.
df.aree1 <- t(df.aree)
df.aree1 <- as.data.frame(df.aree1)
언급URL : https://stackoverflow.com/questions/6778908/transpose-a-data-frame
반응형
'programing' 카테고리의 다른 글
mongoDB에서 $unset과 $set을 조합하여 사용하는 방법 (0) | 2023.06.26 |
---|---|
MongoDB 셸과 서버가 일치하지 않습니다. (0) | 2023.06.21 |
플라우터:코코아 포드의 사양 저장소가 너무 오래되어 종속성을 충족할 수 없습니다. (0) | 2023.06.21 |
반복 컨텐츠 iOS에 콘센트를 연결할 수 없습니다. (0) | 2023.06.21 |
다중 필터 조건 Azure 테이블 저장소 (0) | 2023.06.21 |