r - 如何从 R 中长度不同的两个数据框中找到元素?
问题描述
我有两个宽度不同的矩阵。
Matrix_A
'data.frame':412 obs. of 5 variables:
$ R : num 2 18 18 2 2 18 18 2 2 2 ...
$ NS: num 4.82e+09 4.82e+09 4.82e+09 4.82e+09 4.82e+09 ...
$ NP: chr "20000070000" "20000000090000" "20000000060000" "20000000010000" ...
$ NG: chr "TE" "EC" "ET" "HT" ...
$ DC : logi NA NA NA NA NA NA ...
Matrix_B
'data.frame': 2687 obs. of 4 variables:
$ R : num 18 2 2 2 18 2 2 2 18 2 ...
$ NS : num 4.81e+09 4.81e+09 4.81e+09 4.81e+09 4.81e+09 ...
$ NP :chr "20000000000400" "2000000000600" "2000000001000" "20000000007000" ...
$ NG: chr "HT" "HT" "TT" "TY" ...
我想知道矩阵 B 中存在矩阵 A 的哪些元素,为此我编写了这段代码。
Matrix_B$Results <- ifelse((Matrix_A$R %in% Matrix_B$R),
ifelse((Matrix_A$NS %in% Matrix_B$NS),1,0))
这不会给我一个错误,但结果不正确。
我试过这个
Matrix_B$Results <- ifelse((Matrix_A$R %in% Matrix_B$R) &
(Matrix_A$NS %in% Matrix_B$NS),1,0))
但不工作。
解决方案
我想知道矩阵 B 中存在矩阵 A 的哪些元素
事实上,它是两个集合的减法:
A<-matrix( sample(1:5,12,replace = T ), 4, 3)
B<-matrix( sample(1:10,10,replace = T ), 2, 5)
因此,矩阵 A 和 B 可以是:
> A
[,1] [,2] [,3]
[1,] 4 3 3
[2,] 2 1 5
[3,] 4 4 5
[4,] 1 4 4
> B
[,1] [,2] [,3] [,4] [,5]
[1,] 4 3 10 8 9
[2,] 1 10 10 9 6
现在,如果您想知道两个矩阵中都有哪些元素,您有两个选择:
方法一:
intersect(B,A)
方法二:
existInANotB<-setdiff(A,B)
intersect<-setdiff(A,existInANotB)
推荐阅读
- javascript - 将 toStringTag 与 Object.defineProperties 一起使用时出现意外结果
- scala - 比较数组中的相同案例类数据
- python - 如何分离从python运行的linux命令
- r - 非准引用上下文中的 Tidyeval (psych::describeBy(group))
- azure-resource-manager - 如何获取存储容器的 resourceId?
- python - 使用 pymysql 连接到计算机上的本地 SQL 数据库
- java - 如何使用库基于 RC4 java 中的字符串创建密钥
- javascript - TypeError: navbarUserInfoComponent[0] 在 Jasmine 测试中未定义
- kentico - Kentico:如何在用户帐户停用时发送电子邮件?
- elasticsearch - 将后端侦听器添加到 JMeter 5.3 时出错