Подтвердить что ты не робот

Как получить номер индекса строки в R?

Предположим, что у меня есть список или кадр данных в R, и я хотел бы получить индекс строки, как мне это сделать? То есть, я хотел бы знать, сколько строк содержит определенную матрицу.

4b9b3361

Ответ 1

Я интерпретирую ваш вопрос как получить номера строк.

  • Вы можете попробовать as.numeric(rownames(df)), если вы не задали имена розеров. В противном случае используйте последовательность 1:nrow(df).
  • Функция which() преобразует индекс строки TRUE/FALSE в номера строк.

Ответ 2

Не совсем понятно, что именно вы пытаетесь сделать.

Для ссылки на строку в кадре данных используйте df[row,]

Чтобы получить первую позицию в векторе чего-либо, используйте match(item,vector), где вектор может быть одним из столбцов вашего фрейма данных, например df$cname, если имя столбца является cname.

Edit:

Чтобы объединить их, вы должны написать:

df[match(item,df$cname),]

Обратите внимание, что совпадение дает вам первый элемент в списке, поэтому, если вы не ищете уникальный ссылочный номер, вы можете рассмотреть что-то еще.

Ответ 3

См. row в ?base::row. Это дает индексы строк для любого матричноподобного объекта.

Ответ 4

Если я понимаю ваш вопрос, вы просто хотите иметь доступ к элементам в кадре данных (или списке) по строке:

x = matrix( ceiling(9*runif(20)), nrow=5  )   
colnames(x) = c("col1", "col2", "col3", "col4")
df = data.frame(x)      # create a small data frame

df[1,]                  # get the first row
df[3,]                  # get the third row
df[nrow(df),]           # get the last row

lf = as.list(df)        

lf[[1]]                 # get first row
lf[[3]]                 # get third row

и др.

Ответ 5

Возможно, этот дополнительный пример "матча" будет полезен.

Имея два набора данных:

first_dataset <- data.frame(name = c("John", "Luke", "Simon", "Gregory", "Mary"),
                            role = c("Audit", "HR", "Accountant", "Mechanic", "Engineer"))

second_dataset <- data.frame(name = c("Mary", "Gregory", "Luke", "Simon"))

Если столбец имен содержит только уникальные значения коллекции (для всей коллекции), вы можете получить доступ к строке в другом наборе данных по значению индекса, возвращаемого по совпадению

name_mapping <- match(second_dataset$name, first_dataset$name)

match возвращает правильные индексы строк имен в first_dataset из заданных имен из второго: 5 4 2 1 пример здесь - присоединяющиеся роли из первого набора данных по индексу строки (по заданному значению имени)

for(i in 1:length(name_mapping)) {
    role <- as.character(first_dataset$role[name_mapping[i]])   
    second_dataset$role[i] = role
}

===

second dataset with new column:
     name       role
1    Mary   Engineer
2 Gregory   Mechanic
3    Luke Supervisor
4   Simon Accountant