Найти имя строки на основе значения ячейки и имени столбца в R - PullRequest
1 голос
/ 27 апреля 2020

Скажите, у меня есть этот фрейм данных df:

   |c1 |c2 |c3 |c4 |
r1 | 2 | 3 | 3 | 5 |
r2 | 5 | 8 | 6 | 1 |

Обратите внимание, что все значения столбцов являются уникальными, но некоторые значения в ячейках повторяются (3 и 5). Я хотел бы узнать имя строки, содержащей 5 в столбце c4 (в этом случае она вернет "r1").

Я нашел ТАК вопросы о поиске строки имя, основанное только на значении ячейки, которое не работает, когда разные ячейки могут иметь одинаковые значения. Я также нашел вопросы о поиске строки index на основе значения ячейки и столбца index , но мне нужно иметь возможность сделать это в сценарии, где я мог бы знать индексы которые соответствуют именам столбцов / строк. Но основываясь на ответах, которые я нашел на эти вопросы, я попробовал следующие 4 метода, и ни один из них не сработал:

# 1
df[max(df$c4), "c4"]

# 2
which(df == max(df$c4), arr.ind=TRUE)

# 3
rownames(df)[max(df$c4), "c4"]

# 4
row(df$c4, max(df$c4))

Заранее спасибо!

1 Ответ

1 голос
/ 27 апреля 2020

Если вы хотите, чтобы имя строки основывалось на максимальном значении в c4, используйте:

rownames(df)[which.max(df$c4)]
#[1] "r1"

Или, если может быть многократное максимальное значение, используйте:

rownames(df)[df$c4 == max(df$c4)]

data

df <- structure(list(c1 = c(2L, 5L), c2 = c(3L, 8L), c3 = c(3L, 6L), 
c4 = c(5L, 1L)), class = "data.frame", row.names = c("r1", "r2"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...