열을 데이터 프레임의 첫 번째 위치로 이동
저는 데이터 프레임의 마지막 열을 시작(첫 번째 열)으로 이동하고 싶습니다.R에서 어떻게 해야 합니까?
제 data.frame에는 순서를 변경할 수 있는 열이 천 개 정도 있습니다.저는 단지 하나의 열을 선택하고 "시작으로 이동"
Dplyr의 선택() 접근 방식
마지막 열을 시작으로 이동:
new_df <- df %>%
select(last_column_name, everything())
이 값은 모든 열 및 수량에 대해서도 유효합니다.
new_df <- df %>%
select(col_5, col_8, everything())
사용 예제mtcars
데이터 프레임:
head(mtcars, n = 2)
# mpg cyl disp hp drat wt qsec vs am gear carb
# Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
# Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
# Last column is 'carb'
new_df <- mtcars %>% select(carb, everything())
head(new_df, n = 2)
# carb mpg cyl disp hp drat wt qsec vs am gear
# Mazda RX4 4 21.0 6 160 110 3.90 2.620 16.46 0 1 4
# Mazda RX4 Wag 4 21.0 6 160 110 3.90 2.875 17.02 0 1 4
dplyr 1.0.0
이제 를 포함합니다.relocate()
열 순서를 변경하는 함수입니다.기본 동작은 명명된 열을 첫 번째 위치로 이동하는 것입니다.
library(dplyr) # from version 1.0.0
mtcars %>%
relocate(carb) %>%
head()
carb mpg cyl disp hp drat wt qsec vs am gear
Mazda RX4 4 21.0 6 160 110 3.90 2.620 16.46 0 1 4
Mazda RX4 Wag 4 21.0 6 160 110 3.90 2.875 17.02 0 1 4
Datsun 710 1 22.8 4 108 93 3.85 2.320 18.61 1 1 4
Hornet 4 Drive 1 21.4 6 258 110 3.08 3.215 19.44 1 0 3
Hornet Sportabout 2 18.7 8 360 175 3.15 3.440 17.02 0 0 3
Valiant 1 18.1 6 225 105 2.76 3.460 20.22 1 0 3
그러나 다른 위치는 다음을 사용하여 지정할 수 있습니다..before
또는.after
인수:
mtcars %>%
relocate(gear, carb, .before = cyl) %>%
head()
mpg gear carb cyl disp hp drat wt qsec vs am
Mazda RX4 21.0 4 4 6 160 110 3.90 2.620 16.46 0 1
Mazda RX4 Wag 21.0 4 4 6 160 110 3.90 2.875 17.02 0 1
Datsun 710 22.8 4 1 4 108 93 3.85 2.320 18.61 1 1
Hornet 4 Drive 21.4 3 1 6 258 110 3.08 3.215 19.44 1 0
Hornet Sportabout 18.7 3 2 8 360 175 3.15 3.440 17.02 0 0
Valiant 18.1 3 1 6 225 105 2.76 3.460 20.22 1 0
열을 새 순서로 지정하여 열 순서를 변경할 수 있습니다. 열 순서를 변경할 수 있습니다.data[,c(ORDER YOU WANT THEM TO BE IN)]
마지막 열을 처음으로 사용하려면 다음을 사용합니다.data[,c(ncol(data),1:(ncol(data)-1))]
> head(cars)
speed dist
1 4 2
2 4 10
3 7 4
4 7 22
5 8 16
6 9 10
> head(cars[,c(2,1)])
dist speed
1 2 4
2 10 4
3 4 7
4 22 7
5 16 8
6 10 9
dataframe<-dataframe[,c(1000, 1:999)]
마지막 열, 즉 1000번째 열이 첫 번째 열로 이동합니다.
이것을 답변으로 추가할 가치가 있는지, 댓글을 달면 좋을지 모르겠지만, 라는 기능을 작성했습니다.moveme
사용자가 설명한 언어로 원하는 작업을 수행할 수 있습니다.다음 답변에서 기능을 찾을 수 있습니다. https://stackoverflow.com/a/18540144/1270695
에서 작동합니다.names
당신의data.frame
열 순서를 변경하는 데 사용할 수 있는 문자 벡터를 생성합니다.
mydf <- data.frame(matrix(1:12, ncol = 4))
mydf
moveme(names(mydf), "X4 first")
# [1] "X4" "X1" "X2" "X3"
moveme(names(mydf), "X4 first; X1 last")
# [1] "X4" "X2" "X3" "X1"
mydf[moveme(names(mydf), "X4 first")]
# X4 X1 X2 X3
# 1 10 1 4 7
# 2 11 2 5 8
# 3 12 3 6 9
만약 당신이 이런 식으로 일을 뒤죽박죽으로 만들고 있다면, 당신의 것을 전환하는 것을 제안합니다.data.frame
아주data.table
및 사용setcolorder
(내 것과 함께)moveme
함수(원하는 경우)를 선택하여 참조로 변경합니다.
질문에서 "나는 단지 하나의 열을 선택하여 시작으로 옮기고 싶다"고 언급했습니다.특정 열이 아닌 임의 열인 경우에는 다음을 사용할 수도 있습니다.setdiff
.
"mtcars" 데이터 세트로 작업 중이고 "am" 열을 시작으로 이동하려고 한다고 가정합니다.
x <- "am"
mtcars[c(x, setdiff(names(mtcars), x))]
명명된 열을 첫 번째 위치로 이동하려면 다음을 사용합니다.
df[,c(which(colnames(df)=="desired_colname"),which(colnames(df)!="desired_colname"))]
데이터 프레임의 마지막 열을 첫 번째 열 위치로 이동하기 위해 임의의 행 또는 열과 함께 작동하는 기본 R 접근 방식:
df <- df[,c(ncol(df),1:ncol(df)-1)]
다음을 대체하여 열을 첫 번째 열로 이동하는 데 사용할 수 있습니다.
df <- df[,c(your_column_number_here,1:ncol(df)-1)]
열 번호는 몰라도 열 레이블 이름은 알고 있으면 "your_columnn_name_here"를 대체하여 다음 작업을 수행합니다.
columnNumber <- which(colnames(df)=="your_column_name_here")
df <- df[,c(columnNumber,1:ncol(df)-1)]
또한 다음과 같은 기능도 있습니다.data.table
할 수 있습니다.setcolorder()
:
library(data.table)
mtcars_copy <- copy(mtcars)
setDT(mtcars_copy)
# Move column "gear" in the first position
setcolorder(mtcars_copy, neworder = "gear")
head(mtcars_copy)
# gear mpg cyl disp hp drat wt qsec vs am carb
# 1: 4 21.0 6 160 110 3.90 2.620 16.46 0 1 4
# 2: 4 21.0 6 160 110 3.90 2.875 17.02 0 1 4
# 3: 4 22.8 4 108 93 3.85 2.320 18.61 1 1 1
# 4: 3 21.4 6 258 110 3.08 3.215 19.44 1 0 1
# 5: 3 18.7 8 360 175 3.15 3.440 17.02 0 0 2
# 6: 3 18.1 6 225 105 2.76 3.460 20.22 1 0 1
열이 여러 개인 경우 벡터의 순서를 언급합니다.
setcolorder(mtcars_copy, neworder = c("vs", "carb"))
head(mtcars_copy)
# vs carb gear mpg cyl disp hp drat wt qsec am
# 1: 0 4 4 21.0 6 160 110 3.90 2.620 16.46 1
# 2: 0 4 4 21.0 6 160 110 3.90 2.875 17.02 1
# 3: 1 1 4 22.8 4 108 93 3.85 2.320 18.61 1
# 4: 1 1 3 21.4 6 258 110 3.08 3.215 19.44 0
# 5: 0 2 3 18.7 8 360 175 3.15 3.440 17.02 0
# 6: 1 1 3 18.1 6 225 105 2.76 3.460 20.22 0
데이터의 첫 번째 위치에 대한 모든 위치에서 열 이동
n <- which(colnames(df)=="column_need_move")
column_need_move <- df$column_need_to_move
df <- cbind(column_need_move, df[,-n])
첫 번째 하려면 새열생여열지면려정하로를 합니다..before=1
인수:
my_data <- my_data %>% mutate(newcol = a*b, .before=1)
언급URL : https://stackoverflow.com/questions/22286419/move-a-column-to-first-position-in-a-data-frame
'programing' 카테고리의 다른 글
Chrome의 CSS 사용자 지정 스타일 단추에서 파란색 테두리 제거 (0) | 2023.06.20 |
---|---|
Mongoose에서 하위 문서 하나 찾기 (0) | 2023.06.20 |
Tkinter 애플리케이션을 구성하는 가장 좋은 방법은 무엇입니까? (0) | 2023.06.20 |
C# 각 항목에 대한 if 문을 기준으로 목록의 다음 항목으로 이동 (0) | 2023.06.20 |
수식을 사용하여 배열 필터링(VBA 없음) (0) | 2023.06.20 |