#r #arrays #dataframe
Вопрос:
Как я могу получить массив в виде столбца во фрейме данных, удовлетворяющий условию?
пример:
x=data.frame(pn=c('a','b','c','d','e','f'),price=c(1,2,3,4,5,6))
Затем для заданного списка pn (массива, который может иметь любой размер), например:
y=c('a','b','f','a','a','b','b','a','f','f')
Мне нужен массив цен относительно y. Ожидаемый результат составляет:
1,2,6,1,1,2,2,1,6,6
(Без цикла или лямбда-функции)
Ответ №1:
Используйте именованный вектор для сопоставления
unname(setNames(x$price, x$pn)[y])
#[1] 1 2 6 1 1 2 2 1 6 6