[r] 열 이름으로 데이터 프레임의 열 정렬
이것은 아마도 간단한 질문 일 수 있지만 열을 알파벳순으로 정렬하는 방법을 모릅니다.
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 개의 변수로 거대합니다. 따라서 프로세스는 더 자동화되어야합니다.
답변
당신이 사용할 수있는 order
온 names
, 그리고 부분 집합 열을 주문하는 것을 사용합니다
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())
답변
따라서 특정 열이 먼저 나오고 나머지는 알파벳순으로 표시되도록이 솔루션을 제안합니다.
test[, c("myFirstColumn", sort(setdiff(names(test), "myFirstColumn")))]
답변
다른 옵션은 인수와 함께 str_sort()
라이브러리 stringr 에서 사용하는 것 numeric = TRUE
입니다. 알파벳순이 아닌 숫자가 포함 된 열을 올바르게 정렬합니다 .
str_sort(c("V3", "V1", "V10"), numeric = TRUE)
# [1] V1 V3 V11