[r] 데이터 프레임의 열 이름 변경

“newprice”라는 데이터 프레임이 있고 (아래 참조) 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"


답변

이 오류는 “스마트 따옴표”(또는 무엇이든)에 의해 발생합니다. 여기서의 교훈은 “따옴표를 스마트 인용 부호로 변환하는 ‘편집기’에 코드를 작성하지 마십시오”입니다.

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

매우 간단하고 수정하기 쉽습니다.