Получить индекс столбца из метки во фрейме данных - PullRequest
67 голосов
/ 13 декабря 2010

Скажем, у нас есть следующий фрейм данных:

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

Мы можем выбрать столбец 'B' из его индекса:

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

Есть ли способ получить индекс (2) из метки столбца ('B')?

Ответы [ 6 ]

96 голосов
/ 13 декабря 2010

вы можете получить индекс через grep и colnames:

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

или использовать

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

, чтобы получить только столбцы с именем "B" без тех, которые содержатa B например "ABC".

80 голосов
/ 13 декабря 2010

Это будет делать следующее:

which(colnames(df)=="B")
7 голосов
/ 24 августа 2017

Я хотел просмотреть все индексы для имен столбцов, потому что мне нужно было выполнить сложную перестановку столбцов , поэтому я напечатал имена столбцов в виде кадра данных. Имена строк - это индексы.

as.data.frame(colnames(df))

1 A
2 B
3 C
2 голосов
/ 29 июня 2018

после ответа химерного выше: мне также нужно было получить все индексы столбца в df , поэтому я использовал:

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

или хранить в списке:

indexLst<-which(!names(df)%in%c())
2 голосов
/ 01 июня 2018

Это эффективный способ перечисления переменных с номером столбца:

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
0 голосов
/ 28 ноября 2018

Использование t Функция:

t(colnames(df))

     [,1]   [,2]   [,3]   [,4]   [,5]   [,6]  
[1,] "var1" "var2" "var3" "var4" "var5" "var6"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...