열을 데이터 프레임의 첫 번째 위치로 이동
저는 데이터 프레임의 마지막 열을 시작(첫 번째 열)으로 이동하고 싶습니다.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 |