подмножество по первой части имен столбцов

У меня есть два больших фрейма данных df1 и df2. Я просто хочу сохранить только те столбцы с df2, которые соответствуют первой части имен столбцов (которые представляют названия компаний) df1. Это означает, что я хочу создать подмножество df2, сопоставив название компании с df1. Файлы такие:

df1

date       Com1 - PI    Com3 - PI   Com6 - PI
1/1/2007    292782.4    101780.7    2406010
1/2/2007    292782.4    101780.7    2406010
1/3/2007    292782.4    101780.7    2406010

df2

date        Com1 - CV  Com2- CV  Com3 - CV   Com4 - CV   Com5- CV    Com6 - CV
6/6/1990    1.57         NA        5.3         NA          NA          4.51
6/7/1990    1.57         NA        5.2         NA          NA          4.51
6/8/1990    1.59         NA        5.4         NA          NA          4.51
6/11/1990   1.59         NA        5.2         NA          NA          4.51

Ожидаемый результат (который является подмножеством df2)

date      Com1 - CV     Com3 - CV       Com6 - CV
6/6/1990    1.57           5.3            4.51
6/7/1990    1.57           5.2            4.51
6/8/1990    1.59           5.4            4.51
6/11/1990   1.59           5.2            4.51

Будучи новым учеником r, я был бы признателен, если бы вы мне помогли в этом отношении.


person Samima    schedule 24.03.2018    source источник
comment
Предоставьте свои данные в удобной для вставки форме, например, dput (см. здесь).   -  person Roman Luštrik    schedule 24.03.2018
comment
да, он создает только df с строкой имен столбцов без других строк. Спасибо тебе. @ AaghazHussain   -  person Samima    schedule 24.03.2018


Ответы (1)


Удалите часть после первого слова с помощью регулярного выражения, а затем используйте %in%, чтобы получить точное совпадение

df2[sub("\\s*-\\s*.*", "", names(df2)) %in% sub("\\s*-\\s*.*", "", names(df1))]
#       date Com1 - CV Com3 - CV Com6 - CV
#1  6/6/1990      1.57       5.3      4.51
#2  6/7/1990      1.57       5.2      4.51
#3  6/8/1990      1.59       5.4      4.51
#4 6/11/1990      1.59       5.2      4.51
person akrun    schedule 24.03.2018