我有 1 个数据数据框和多个“参考”数据框。我正在尝试自动检查数据帧的值是否与参考数据帧的值匹配。重要的是,这些值的顺序也必须与参考数据帧中的值相同。这些列是重要的列,但我的真实数据集包含更多列。
下面是一个玩具数据集。
Dataframe
group type value
1 A Teddy
1 A William
1 A Lars
2 B Dolores
2 B Elsie
2 C Maeve
2 C Charlotte
2 C Bernard
Reference_A
type value
A Teddy
A William
A Lars
Reference_B
type value
B Elsie
B Dolores
Reference_C
type value
C Maeve
C Hale
C Bernard
例如,在玩具数据集中,group1 的得分为 1.0(100% 正确),因为它在 A 中的所有值都与 reference_A 中 An 的值和值顺序匹配。但是,group2 得分为 0.0,因为 B 中的值与 reference_B 相比是无序的,并且 0.66 是因为 C 中的 2/3 值与 reference_C 中的值和值的顺序匹配。
所需输出
group type score
1 A 1.0
2 B 0.0
2 C 0.66
这很有帮助,但没有考虑顺序:检查一个数据框列中的值是否存在于第二个数据框中 https://stackoverflow.com/questions/13774773/check-whether-values-in-one-data-frame-column-exist-in-a-second-data-frame
更新:感谢所有提供解决方案的人!这些解决方案非常适合玩具数据集,但尚未适用于具有更多列的数据集。同样,就像我在帖子中所写的那样,上面列出的列很重要 - 如果有必要,我不想删除不需要的列。
我们也可以这样做mget
返回一个list
of data.frames
,将它们绑定在一起,然后进行分组mean
逻辑向量的
library(dplyr)
mget(ls(pattern = '^Reference_[A-Z]$')) %>%
bind_rows() %>%
bind_cols(df1) %>%
group_by(group, type = type...1) %>%
summarise(score = mean(value...2 == value...5))
# Groups: group [2]
# group type score
# <int> <chr> <dbl>
#1 1 A 1
#2 2 B 0
#3 2 C 0.667
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)