다음 데이터 프레임이 있다고 가정합니다.
> 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)를 얻는 방법이 있습니까?
답변:
당신은을 통해 인덱스를 얻을 수 grep
및 colnames
:
grep("B", colnames(df))
[1] 2
또는 사용
grep("^B$", colnames(df))
[1] 2
"ABC"와 같이 B를 포함하지 않고 "B"라는 열만 가져옵니다.
grep
당신이 그것을 설명하는 방식을 일반적으로 사용 합니다.
다음이 수행합니다.
which(colnames(df)=="B")
grep
는 또한 장점입니다. 즉, 정규식을 사용한다는 것입니다 (따라서 열 이름에서 모든 패턴을 검색 할 수 있음). colnames "B"를 얻으려면 "^B$"
grep의 패턴으로 사용 하십시오. ^는 문자열의 시작을 나타내는 메타 문자이고 $는 문자열의 끝입니다.
which
. 직접 사용할 수 있습니다df[names(df)=="B"]
grep("^fBodyAcc-meanFreq\\()-Z$",colnames(df))
또는 grep("^fBodyAcc-meanFreq\\(\\)-Z$",colnames(df))
.
위 의 chimeric의 답변 에서 다음을 따르십시오 .
얻으려면 모든 열 인덱스를 에 DF 내가 사용하므로 :
which(!names(df)%in%c())
또는 목록에 저장 :
indexLst<-which(!names(df)%in%c())