R: Нахождение индекса соответствующего значения в том же столбце - PullRequest
0 голосов
/ 30 сентября 2018

Это доставляет мне много хлопот сегодня, и я уверен, что есть очевидное решение, о котором я не думаю.

У меня есть фрейм данных в несколько тысяч строк.Существует столбец, в котором каждое значение в этом столбце отображается ровно дважды.Я хочу найти индекс каждого соответствующего значения.Столбец выглядит так:

  col
1 cat
2 dog 
3 bird
4 dog
5 bird
6 cat

И я хотел бы знать соответствующий индекс, где появляется совпадение, чтобы он возвращал что-то вроде этого:

[1] 6 4 5 2 3 1

1 Ответ

0 голосов
/ 30 сентября 2018

Мы можем сделать

df$new_col <- seq_along(df$col)
df$new_col <- with(df, ave(new_col, col, FUN = rev))
df
#   col new_col
#1  cat       6
#2  dog       4
#3 bird       5
#4  dog       2
#5 bird       3
#6  cat       1

На первом шаге мы создаем new_col как последовательность, работающую от 1 до nrow(df).Таким образом, эта переменная не отличается от номеров строк.

Если мы думаем о переменной col как об определяющей группе, мы можем получить «соответствующий индекс, где появляется совпадение», если мы rev будем использовать только чтосозданный столбец по группам col для получения желаемого результата.

В качестве единого пользователя

with(df, ave(seq_along(col), col, FUN = rev))

data

df <- structure(list(col = c("cat", "dog", "bird", "dog", "bird", "cat"
)), .Names = "col", class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...