r-比较两个数据帧中的某些列名



我正在寻找一种方法来比较两个不同的数据帧列名(只有特定范围的列(,并只保留两个数据帧之间具有相同共享列名相似性的名称。(不过,我只想比较从某个点向前的每个数据帧。

我会有更大数量的列,所以我想看看什么在更大的数据集中最有效。

假设我有DF1

值224辆
ID 位置值3值4
第一个 停车 4 3
第二套 房子52
第二个 Barn第三湖
第三机场 7 5 4
第四辆 汽车5辆1辆

这是一个基本的R选项

# Common column-name pattern across `data.frame`
pattern <- "Value"
common_nms <- intersect(
names(DF1)[grep(pattern, names(DF1))], 
names(DF2)[grep(pattern, names(DF2))])
# Unique and and "pattern-shared" columns in `DF1`
DF1[c(names(DF1)[-grep(pattern, names(DF1))], common_nms)]
#      ID Location Value2 Value3
#1  First     Park      4      3
#2 Second    House      2      5
#3 Second     Barn      4      5
#4  Third     Lake      1      8
#5  Third  Airport      7      5
#6 Fourth      Car      4      5
# Unique and and "pattern-shared" columns in `DF2`
DF2[c(names(DF2)[-grep(pattern, names(DF2))], common_nms)]
#    Name Identifier        City Value2 Value3
#1   Jeff       ISE2     Seattle      1      6
#2 George       GSY2     Houston      2      2
#3   Carl       BHU1       Miami      3      7
#4   Mike       POI0 Los Angeles      8      8
#5  Linel       ANN1          DC      5      4
#6   Pork       CNU4    Portland      5      1

这个想法是使用pattern来过滤列名,然后通过intersect来确定公共名称。最后的列名由与pattern("唯一"名称(和交集中的公共列名不匹配的列名给出。

最新更新