我正在寻找一种方法来比较两个不同的数据帧列名(只有特定范围的列(,并只保留两个数据帧之间具有相同共享列名相似性的名称。(不过,我只想比较从某个点向前的每个数据帧。
我会有更大数量的列,所以我想看看什么在更大的数据集中最有效。
假设我有DF1
ID | 位置 | 值2值3 | 值4 | ||
---|---|---|---|---|---|
第一个 | 停车 | 4 | 3 | ||
第二套 | 房子 | 25 | 2 | ||
第二个 | Barn第三湖 | ||||
第三机场 | 7 | 5 | 4 | ||
第四辆 | 汽车 | 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
("唯一"名称(和交集中的公共列名不匹配的列名给出。