Как автоматически настроить скрипт R на основе количества переменных (var1, var2, et c.) - PullRequest
2 голосов
/ 11 февраля 2020

Основной набор данных:

df <- data.frame(var1 =c(1, 2, 1), var2 = c(2, 3, 3))

Моя таблица сопоставления:

mt <- data.frame(var1 = c(1, 2, 1), var2 = c(2, 3,3), color = c('red', 'blue', 'yellow'))

Чтобы объединить df с mt, сохранив все строки в df:

df <- merge(x = df, y=mt, by=c("var1", "var2"), all.x = TRUE)

ВОПРОС : Как я могу динамически изменить код, чтобы, если у меня было 4 числа переменных (ie. Var1, var2, var3, var4), код автоматически настраивался на следующее?

df <- merge(x = df, y=mt, by=c("var1", "var2", "var3", "var4"), all.x = TRUE)

Точно так же, если у нас есть 5 чисел, оно будет автоматически настроено на:

df <- merge(x = df, y=mt, by=c("var1", "var2", "var3", "var4", "var5"), all.x = TRUE)

1 Ответ

2 голосов
/ 11 февраля 2020

Если оба набора данных имеют одинаковые имена столбцов, которые используются в by, нам не нужно указывать by, так как он автоматически подбирает столбцы путем сопоставления пересекающихся имен столбцов.

merge(df, mt, all.x = TRUE)

Но, если есть другие столбцы и вы хотите указать только столбцы "var", тогда можно выбрать либо startsWith

merge(x = df, y=mt, by= names(df)[startsWith(names(df), "var")], all.x = TRUE)

, либо grep

merge(x = df, y=mt, by= grep("^var\\d+$", names(df), value = TRUE), all.x = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...