создать переменную в df на основе комбинации значений, расположенных в другой df в R - PullRequest
0 голосов
/ 08 марта 2020

новичок в р! Я хотел бы создать переменную (newvar) в моем df, который основан на значениях других переменных в моем df (x, y, z). внешний файл (exfile) имеет 4 столбца со всеми возможными комбинациями x, y и z в первых 3 столбцах, а 4-й столбец (ответ) имеет значение, которое я хотел бы, чтобы newvar был. я мог бы сделать это вручную, используя mutate () + case_when () и перечислить все комбинации, однако существует много разных комбинаций, поэтому я решил написать простую функцию.

exfile выглядит следующим образом:

exfile image здесь

foo <- function (x, y, z) {

  exfile <- read.csv("exfile.csv")
  exfile %>% filter (x==x, y==y, z==z) %>%
  select (answer) %>% as.numeric (.) -> x

return (x)

}

это прекрасно работает, если я просто ввожу числа, но когда я использую его с my df:

df %>%
  mutate (newvar = foo(x, y, z))-> df

проблема в том, что я не могу передать векторы в filter (), поэтому я получаю сообщение об ошибке: большая длина объекта не кратна короткой длине объекта.

опять же, существует много разных комбинаций, поэтому было бы невозможно выполнить несколько функций if () в функции ...

что мне делать?

спасибо!

edit: я пытался сделать% in% вместо ==, и вместо этого получаю это сообщение об ошибке: Ошибка в function_list [k]: (список) объект не может быть приведен к типу 'double'

update: inner_join () - это решение проблемы! спасибо всем!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...