Programing

열 이름이 주어지면 R의 열 번호를 가져옵니다.

lottogame 2020. 12. 28. 07:45
반응형

열 이름이 주어지면 R의 열 번호를 가져옵니다.


중복 가능성 :
데이터 프레임의 레이블에서 열 인덱스 가져 오기

이름이 주어진 열의 열 번호를 가져와야합니다.

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

df <- data.frame(a=rnorm(100),b=rnorm(100),c=rnorm(100))

다음과 같이 작동하는 기능이 필요합니다.

getColumnNumber(df,"b")

그리고 그것은 돌아올 것입니다

[1] 2

그런 기능이 있습니까?

감사!


which( colnames(df)=="b" )

해야합니다.


빠르고 깔끔한 방법은 다음과 같습니다.

> match("b",names(df))
[1] 2

즉 그 벡터 스캔 방지 ==which수행하십시오. 열이 많고이 작업을 많이한다면 fastmatch 패키지를 좋아할 것 입니다.

> require(fastmatch)
> fmatch("b",names(df))
[1] 2

fmatch는보다 빠르지 match만 후속 호출에서는 더 빠를뿐만 아니라 즉각적입니다.


정확하지 않은 일치 작업을 더 잘 일반화하는 또 다른 방법은 다음을 사용하는 것입니다 grep.

grep("^b$", colnames(df) )

"b"로 시작하는 모든 열 이름의 번호를 제거하려면 다음과 같이 작성합니다.

df[ , - grep("^b", colnames(df) )]

이는 문자형 벡터에 음의 인덱싱을 사용할 수 없다는 문제를 깔끔하게 해결합니다.


.. 특히 여러 열 인덱스를 가져와야하는 경우 아래 접근 방식이 적용됩니다.

> df <- data.frame(a=rnorm(100),b=rnorm(100),c=rnorm(100))
> which(names(df)%in%c("b", "c"))
[1] 2 3

df 부분 집합 화에 이것을 사용하면 which () 필요하지 않습니다.

> df_sub <- df[, names(df)%in%c("b", "c")]
> head(df_sub)
           b          c
1  0.1712754  0.3119079
2 -1.3656995  0.7111664
3 -0.2176488  0.7714348
4 -0.6599826 -0.3528118
5  0.4510227 -1.6438053
6  0.2451216  2.5305453

참조 URL : https://stackoverflow.com/questions/9277363/get-the-column-number-in-r-given-the-column-name

반응형