Я ищу простой однострочник, который поможет мне найти соответствующее значение в кадре данных.
Образец данных:
weather <-data.frame("date" = seq(as.Date("2000/1/1"), by ="days", length.out = 10), temp = runif(10))
weather
date temp
1 2000-01-01 0.08520875
2 2000-01-02 0.69003449
3 2000-01-03 0.85892903
4 2000-01-04 0.37790250
5 2000-01-05 0.04121786
6 2000-01-06 0.31550816
7 2000-01-07 0.86219597
8 2000-01-08 0.30844555
9 2000-01-09 0.96949855
10 2000-01-10 0.18851018
Допустим, теперь я хочу найти день, когда произошла максимальная температура:
max_temp <- max(weather$temp)
max_temp
[1] 0.9694985
Теперь есть несколько способов, которыми я могу найти дату этой температуры (то есть соответствующее значение, за которым я следую):
weather[which(weather$temp == max_temp), which(colnames(weather) == "date")]
[1] "2000-01-09"
Но это довольно трудоемко. Я также мог бы использовать dplyr:
library(dplyr)
filter(weather, temp == max_temp) %>%
select(date)
date
1 2000-01-09
Но опять же, двухсторонний вкладыш в консоли, чтобы получить это, кажется излишним.
Не могу не почувствовать, что должно быть что-то вроде:
function(df, name_of_known_variable, value_of_known_variable, character_vector_of_variables_of_interest)
Так что для этого примера это будет выглядеть (при условии, что функция «соответствует»):
correspond(weather, temp, max_temp, date)
1 2000-01-09
Я осмотрелся и не могу найти что-то простое для этого. Обратите внимание, что я понимаю, что могу использовать:
weather[which.max(weather$temp), 1]
[1] "2000-01-09"
Но давайте предположим, что я не обязательно ищу максимальную температуру (давайте представим, что у меня просто есть интересующее значение, и я пытаюсь найти соответствующее значение). Давайте также представим, что у меня есть массивный фрейм данных с большим и большим количеством столбцов (так много, чтобы сделать их подсчет трудоемким). Далее, давайте представим, что я хочу вернуть соответствующие значения из нескольких столбцов.