Programing

열 이름으로 데이터 프레임의 열 정렬

lottogame 2020. 10. 19. 07:35
반응형

열 이름으로 데이터 프레임의 열 정렬


이것은 아마도 간단한 질문 일 수 있지만 열을 알파벳순으로 정렬하는 방법을 모릅니다.

test = data.frame(C = c(0, 2, 4, 7, 8), A = c(4, 2, 4, 7, 8), B = c(1, 3, 8, 3, 2))

#   C A B
# 1 0 4 1
# 2 2 2 3
# 3 4 4 8
# 4 7 7 3
# 5 8 8 2

나는 열 이름을 알파벳순으로 정렬하여

#   A B C
# 1 4 1 0
# 2 2 3 2
# 3 4 8 4
# 4 7 3 7
# 5 8 2 8

다른 사람들에게는 내 자신의 정의 된 순서를 원합니다.

#   B A C
# 1 4 1 0
# 2 2 3 2
# 3 4 8 4
# 4 7 3 7
# 5 8 2 8

내 데이터 세트는 10000 개의 변수로 거대합니다. 따라서 프로세스는 더 자동화되어야합니다.


당신이 사용할 수있는 ordernames, 그리고 부분 집합 열을 주문하는 것을 사용합니다

test[ , order(names(test))]
  A B C
1 4 1 0
2 2 3 2
3 4 8 4
4 7 3 7
5 8 2 8

자신이 정의한 주문의 경우 주문에 대한 이름 매핑을 정의해야합니다. 이것은 당신이 이것을 어떻게하고 싶은지에 달려 있지만, 어떤 기능을 order위와 바꾸면 원하는 결과를 얻을 수 있습니다.

예를 들어 원하는 순서를 지정하는 대상 벡터에 따라 데이터 프레임의 행 정렬을 살펴볼 match있습니다. names, 원하는 열 순서를 포함하는 대상 벡터에 대해 데이터 프레임을 만들 수 있습니다 .


dplyr누군가가 파이프로 이것을하고 싶어하는 경우에 대한 필수 답변이 있습니다.

test %>% 
    select(sort(names(.)))

test = data.frame(C=c(0,2,4, 7, 8), A=c(4,2,4, 7, 8), B=c(1, 3, 8,3,2))

다음과 같은 간단한 함수 교체를 사용하여 수행 할 수 있습니다 (하지만 데이터 프레임에 열이 많지 않은 경우에만 해당).

test <- test[, c("A", "B", "C")]

다른 사람들을 위해:

test <- test[, c("B", "A", "C")]

  test[,sort(names(test))]

열 이름 정렬은 쉽게 작동 할 수 있습니다.


하나 이상의 열만 앞쪽에두고 나머지 순서는 신경 쓰지 않는 경우 :

require(dplyr)
test %>%
  select(B, everything())

다음은 내 데이터 세트로 비슷한 문제를 해결하기 위해 찾은 것입니다.

먼저 James가 위에서 언급 한 것을 수행하십시오.

test[ , order(names(test))]

Second, use the everything() function in dplyr to move specific columns of interest (e.g., "D", "G", "K") at the beginning of the data frame, putting the alphabetically ordered columns after those ones.

select(test, D, G, K, everything())

­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­


Similar to other syntax above but for learning - can you sort by column names?

sort(colnames(test[1:ncol(test)] ))

One other option is to use str_sort() from library stringr, with the argument numeric = TRUE

str_sort(c("V3", "V1", "V10"), numeric = TRUE)

# [1] V1 V3 V11


So to have a specific column come first, then the rest alphabetically, I'd propose this solution:

test[, c("myFirstColumn", sort(setdiff(names(test), "myFirstColumn")))]

참고URL : https://stackoverflow.com/questions/7334644/sort-columns-of-a-dataframe-by-column-name

반응형