r - 检查两个数据帧在 R 中的同一行和同一列是否具有相同的值
问题描述
我有这两个数据框
x = c(2,4,2,4,4,6)
y = c("hi", "xyz" ,"xyz" ,"xyz" ,"xyz" ,"xyz")
z = c(2,4,5,5,5,5)
dfa = data.frame(X = x, Y = y, Z = z)
dfa
X Y Z
1 2 "hi" 2
2 4 "xyz" 4
3 2 "xyz" 5
4 4 "xyz" 5
5 4 "xyz" 5
6 6 "xyz" 5
另一个具有相同的行和列
x = c(2,7,8,2,4,6)
y = c("hi", "234" ,"xyz" ,"25" ,"xyz" ,"dfs")
z = c(20,4,5,3,1,5)
dfb = data.frame(X = x, Y = y, Z = z)
dfb
X Y Z
1 2 "hi" 20
2 7 "234" 4
3 8 "xyz" 5
4 2 "25" 3
5 4 "xyz" 1
6 6 "dfs" 5
我想获取每列 dfa 中的值与 dfb 相同的次数
所以对于这个例子,输出将是
X Y Z
1 2 3 3
请让我知道如何进行此操作。非常感谢
解决方案
您可以使用mapply
/ Map
:
mapply(function(x, y) sum(x== y), dfa, dfb)
或者如果您愿意,也可以类似map2_dbl
地purrr
tidyverse
purrr::map2_dbl(dfa, dfb, ~sum(.x == .y))
这是假设两个数据帧中的列的顺序相同,如果它们不是基于另一个数据帧重新排列一个数据帧。
dfa <- dfa[names(dfb)]
推荐阅读
- c# - C# 中的千位分隔符用于更多的小数点
- python - 获取 3D 向量并生成角度分布图
- android - TextInputLayout 删除不需要的空间
- git - 合并提交后在 git ci/cd 上触发脚本
- wpf - 升级到 Windows 10 后,拖放在 WPF 应用程序中不起作用
- string - 检索存储在 SQFlite 数据库 (Flutter) 中的数据?
- javascript - 尝试为类似 RxJS 的结构开发“拉模式”得到 RangeError
- c# - 一段时间后 HttpListener 似乎失去了连接
- excel - 我希望通过应用 vba 代码将数字转换为日期
- c# - 如何将多个 Winforms 图表图像正确保存到磁盘?