Выберите только столбцы с именами столбцов, которые соответствуют значениям из строк в других df - PullRequest
1 голос
/ 01 мая 2020

У меня есть два кадра данных, один из которых представляет собой очень большой, широкий набор данных с сотнями параметров, а другой - с 3 столбцами, которые идентифицируют параметры в большом кадре данных с предельными значениями спецификации, и два столбца для нижнего и верхнего пределов. То, что я хочу сделать, это иметь возможность уменьшить широкий фрейм данных только до тех столбцов, которые находятся в пределах фрейма данных. Я чувствую, что это невероятно просто c, но я не могу заставить его работать

Ниже приведен пример и вывод, который мне нужен.

df

df <- data.frame("par.1" = c(1, 1, 2, 3, 5), "par.2" = c(10, 11, 12, 11, 15),"par.3" = c(8, 8, 12, 8, 9),"par.4" = c(8, 8, 12, 8, 9))

limit

limits <- data.frame("parameter" = c("par.2", "par.4"), "lsl" = c(8,5), "usl" = c(16,15))

Вот вывод, который я ищу

df.reduced

    par.2 par.4
1    10     8
2    11     8
3    12    12
4    11     8
5    15     9

Ответы [ 3 ]

1 голос
/ 01 мая 2020

В качестве альтернативы используйте match:

df[match(limits$parameter, names(df))]
1 голос
/ 01 мая 2020

Просто подмножество df имен столбцов по значениям %in% столбец parameter из limits

df[names(df) %in% limits$parameter]
  par.2 par.4
1    10     8
2    11     8
3    12    12
4    11     8
5    15     9
0 голосов
/ 01 мая 2020

Опция с intersect

df[intersect(names(df), as.character(limits$parameter))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...