[r] 데이터 프레임의 레이블에서 열 인덱스 가져 오기

다음 데이터 프레임이 있다고 가정합니다.

> df
  A B C
1 1 2 3
2 4 5 6
3 7 8 9

색인에서 ‘B’열을 선택할 수 있습니다.

> df[,2]
[1] 2 5 8

열 레이블 ( ‘B’)에서 인덱스 (2)를 얻는 방법이 있습니까?



답변

당신은을 통해 인덱스를 얻을 수 grepcolnames:

grep("B", colnames(df))
[1] 2

또는 사용

grep("^B$", colnames(df))
[1] 2

“ABC”와 같이 B를 포함하지 않고 “B”라는 열만 가져옵니다.


답변

다음이 수행합니다.

which(colnames(df)=="B")


답변

복잡한 열 재 배열 이 필요했기 때문에 colname에 대한 모든 인덱스를보고 싶었 기 때문에 colname을 데이터 프레임으로 인쇄했습니다. 행 이름은 인덱스입니다.

as.data.frame(colnames(df))

1 A
2 B
3 C


답변

의 chimeric의 답변 에서 다음을 따르십시오 .

얻으려면 모든 열 인덱스를DF 내가 사용하므로 :

which(!names(df)%in%c())

또는 목록에 저장 :

indexLst<-which(!names(df)%in%c())


답변

이것은 열 번호로 변수를 나열하는 효율적인 방법 인 것 같습니다.

cbind(names(df))

산출:

     [,1]
[1,] "A"
[2,] "B"
[3,] "C"

때로는 위치가있는 변수를 코드에 복사하여이 함수를 사용합니다.

varnums<- function(x) {w=as.data.frame(c(1:length(colnames(x))),
          paste0('# ',colnames(x)))
names(w)= c("# Var/Pos")
w}
varnums(df)

산출:

# Var/Pos
# A         1
# B         2
# C         3


답변

match("B", names(df))

이름 벡터가있는 경우에도 작동 할 수 있습니다.


답변

사용 t기능 :

t(colnames(df))

     [,1]   [,2]   [,3]   [,4]   [,5]   [,6]
[1,] "var1" "var2" "var3" "var4" "var5" "var6"