데이터 프레임의 열 이름 변경
저는 "new price" (아래 참조)라는 데이터 프레임을 가지고 있으며 R에 있는 제 프로그램의 열 이름을 변경하고 싶습니다.
> newprice
Chang. Chang. Chang.
1 100 36 136
2 120 -33 87
3 150 14 164
사실 이것이 바로 다음과 같은 일을 참조하십시오.
names(newprice)[1]<-paste("premium")
names(newprice)[2]<-paste("change")
names(newprice)[3]<-paste("newprice")
저는 보시는 것처럼 각 열 이름이 달라지기를 원하기 때문에 이것을 반복하지 않았습니다.
R 콘솔에 프로그램을 붙여넣으면 다음과 같은 출력이 표시됩니다.
> names(newprice)[1]<-paste(“premium”)
Error: unexpected input in "names(newprice)[1]<-paste(“"
> names(newprice)[2]<-paste(“change”)
Error: unexpected input in "names(newprice)[2]<-paste(“"
> names(newprice)[3]<-paste(“newpremium”)
Error: unexpected input in "names(newprice)[3]<-paste(“"
저는 똑같이 사용해 보았습니다.c()
함수 예를 들어c("premium")
대신에paste()
기능은 있지만 소용이 없습니다.
누가 이것을 알아내는 것을 도와줄 수 있습니까?
사용colnames()
함수:
R> X <- data.frame(bad=1:3, worse=rnorm(3))
R> X
bad worse
1 1 -2.440467
2 2 1.320113
3 3 -0.306639
R> colnames(X) <- c("good", "better")
R> X
good better
1 1 -2.440467
2 2 1.320113
3 3 -0.306639
부분 집합을 지정할 수도 있습니다.
R> colnames(X)[2] <- "superduper"
사용자:
colnames(dataframe)[which(names(dataframe) == "columnName")] <- "newColumnName"
오류는 "smart-quote"(또는 "smart-quote") 또는 "smart-quotesmart-quote"여기서의 교훈은 "인용문을 스마트 인용문으로 변환하는 '편집기'에 코드를 쓰지 마십시오."라는 것입니다.
names(newprice)[1]<-paste(“premium”) # error
names(newprice)[1]<-paste("premium") # works
또한, 당신은 필요하지 않습니다.paste("premium")
(에 대한 요청)paste
중복됨) 그리고 공간을 두는 것이 좋습니다.<-
혼동을 방지하기 위해(예:x <- -10; if(x<-3) "hi" else "bye"; x
).
시도:
names(newprice)[1] <- "premium"
이 작업을 수행하는 새로운 권장 방법은setNames
기능.봐?setNames
이렇게 하면 의 새 복사본이 생성됩니다.data.frame
반드시 결과를 원본에 할당합니다.data.frame
그것이 당신의 의도라면.
data_frame <- setNames(data_frame, c("premium","change","newprice"))
R의 최신 버전을 사용하면 경고가 표시됩니다.colnames
앞의 답변에서 제시한 몇 가지 방법으로.
만약 이것이data.table
대신, 당신은 그것을 사용할 수 있습니다.data.table
기능.setnames
참조를 통해 특정 열 이름 또는 단일 열 이름을 수정할 수 있습니다.
setnames(data_table, "old-name", "new-name")
저도 같은 문제가 있었고 이 코드는 저에게 잘 해결되었습니다.
names(data)[names(data) == "oldVariableName"] <- "newVariableName"
간단히 말해서, 이 코드는 다음을 수행합니다.
names(data)
데이터 프레임의 모든 이름을 조사합니다(data
)
[names(data) == oldVariableName]
변수 이름을 추출합니다(oldVariableName
이름을 바꾸고 싶은 경우<- "newVariableName"
새 변수 이름을 할당합니다.
다른 것들과 유사합니다.
cols <- c("premium","change","newprice")
colnames(dataframe) <- cols
매우 간단하고 쉽게 수정할 수 있습니다.
열 이름을 열 이름 함수로 변경합니다.
colnames(newprice)[1] = "premium"
colnames(newprice)[2] = "change"
colnames(newprice)[3] = "newprice"
이전 열 이름만 알고 있을 때 모든 열이 아닌 여러 열의 이름을 한 번에 변경해야 하는 경우 사용할 수 있습니다.colnames
기능 및%in%
교환입니다.예:
df = data.frame(bad=1:3, worse=rnorm(3), worst=LETTERS[1:3])
bad worse worst
1 1 -0.77915455 A
2 2 0.06717385 B
3 3 -0.02827242 C
이제 "나쁜" 및 "나쁜"을 "좋은" 및 "최고"로 변경하려고 합니다.사용할 수 있습니다.
colnames(df)[which(colnames(df) %in% c("bad","worst") )] <- c("good","best")
이것은 결과적으로
good worse best
1 1 -0.6010363 A
2 2 0.7336155 B
3 3 0.9435469 C
제 칼럼 이름은 아래와 같습니다.
colnames(t)
[1] "Class" "Sex" "Age" "Survived" "Freq"
Class and Sex의 열 이름을 변경하고 싶습니다.
colnames(t)=c("STD","Gender","AGE","SURVIVED","FREQ")
몇 가지 옵션이 있습니다.dplyr::rename()
그리고.dplyr::select()
:
library(dplyr)
mtcars %>%
tibble::rownames_to_column('car_model') %>% # convert rowname to a column. tibble must be installed.
select(car_model, est_mpg = mpg, horse_power = hp, everything()) %>% # rename specific columns and reorder
rename(weight = wt, cylinders = cyl) %>% # another option for renaming specific columns that keeps everything by default
head(2)
car_model est_mpg horse_power cylinders disp drat weight qsec vs am gear carb
1 Mazda RX4 21 110 6 160 3.9 2.620 16.46 0 1 4 4
2 Mazda RX4 Wag 21 110 6 160 3.9 2.875 17.02 0 1 4 4
또한 세 가지 범위의 변형이 있습니다.dplyr::rename()
:dplyr::rename_all()
모든 열 이름에 대해,dplyr::rename_if()
열 이름을 조건부로 대상으로 지정하는 경우dplyr::rename_at()
이름이 지정된 열을 선택합니다.다음 예제에서는 공백과 마침표를 밑줄로 바꾸고 모든 항목을 소문자로 변환합니다.
iris %>%
rename_all(~gsub("\\s+|\\.", "_", .)) %>%
rename_all(tolower) %>%
head(2)
sepal_length sepal_width petal_length petal_width species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
dplyr::select_all()
유사한 방식으로 사용할 수도 있습니다.
iris %>%
select_all(~gsub("\\s+|\\.", "_", .)) %>%
select_all(tolower) %>%
head(2)
sepal_length sepal_width petal_length petal_width species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
시도:
names(newprice) <- c("premium", "change", "newprice")
스콧 윌슨의 답변을 수정하고 약간 확장하기 위해서야.
data할 수 . table'ssetnames
data.too.data.frame 파일에 .
가 빨라질 , 작업 속도가 빨라질 것으로 예상할 수 있습니다.setnames
참조를 통해 열 이름을 업데이트하므로 메모리 사용 효율성이 향상됩니다.이는 다음을 통해 추적할 수 있습니다.address
함수, 아래를 참조하십시오.
library(data.table)
set.seed(123)
n = 1e8
df = data.frame(bad=sample(1:3, n, TRUE), worse=rnorm(n))
address(df)
#[1] "0x208f9f00"
colnames(df) <- c("good", "better")
address(df)
#[1] "0x208fa1d8"
rm(df)
dt = data.table(bad=sample(1:3, n, TRUE), worse=rnorm(n))
address(dt)
#[1] "0x535c830"
setnames(dt, c("good", "better"))
address(dt)
#[1] "0x535c830"
rm(dt)
따라서 메모리 제한에 도달한 경우 이 메모리를 대신 사용할 수 있습니다.
편집은 다음과 같이 수행할 수 있습니다.
newprice <- edit(newprice)
열 이름을 수동으로 변경합니다.
이것은 도움이 될 수 있습니다.
rename.columns=function(df,changelist){
#renames columns of a dataframe
for(i in 1:length(names(df))){
if(length(changelist[[names(df)[i]]])>0){
names(df)[i]= changelist[[names(df)[i]]]
}
}
df
}
# Specify new dataframe
df=rename.columns(df,list(old.column='new.column.name'))
데이터 프레임이 2개인 경우 다음 작업이 가능합니다.
DF1<-data.frame('a', 'b')
DF2<-data.frame('c','d')
우리는 DF1의 이름을 다음과 같이 변경합니다.
colnames(DF1)<- colnames(DF2)
데이터 프레임 열 이름 변경
colnames(dataset)[colnames(dataset) == 'name'] <- 'newcolumnname'
을 사용한 한 가지 data.table
:
library(data.table)
setDT(dataframe)
setnames(dataframe,'Old1','New1')
setnames(dataframe,'Old2','New2')
이것은 나에게 도움이 됩니다.
newprice<- setNames(newprice, c("premium", "change", "newprice"))
언급URL : https://stackoverflow.com/questions/6081439/changing-column-names-of-a-data-frame
'source' 카테고리의 다른 글
오라클 데이터베이스의 URL은 어떻게 알 수 있습니까? (0) | 2023.06.11 |
---|---|
응용 프로그램은 루트 암호(MariaDB)를 사용해야만 연결할 수 있습니다. (0) | 2023.06.06 |
레일: 예외의 전체 스택 추적 기록 (0) | 2023.06.06 |
Firebase 분석을 사용하여 Android 조각을 추적하는 방법 (0) | 2023.06.06 |
런타임에 특정 하위 보기에 대해 자동 레이아웃을 사용하지 않도록 설정할 수 있습니까? (0) | 2023.06.06 |