r - R. 从 df A 中获取第一行与 df B 的元素匹配的列
问题描述
我有一个数据框 A 没有这样的列名(真实的有 1808 列和 ~1300000 行):
一种
1 1 2 2 6 6 13 13 16 16
0 0 1 0 2 1 0 1 1 0
0 1 2 0 1 2 0 1 0 0
1 1 1 0 1 1 0 2 2 1
我还有一个带有单列的数据框 B(真实的有 407 行),其中观察值是 A 中第 1 行的子集:
乙
2
13
16
我想获得一个数据框 C,其中 A 中的列与 B 中的观察结果相匹配。我会得到:
一种
2 2 13 13 16 16
1 0 0 1 1 0
2 0 0 1 0 0
1 0 0 2 2 1
解决方案
试试这个base R
方案。您可以使用which()
来检测所需的值,然后您可以按列进行选择。由于您希望使用的第一行A
以及作为列A[1,]
的值B
,您可以使用B[,1,drop=T]
. 这里的代码:
#Code
A[,which(A[1,] %in% B[,1,drop=T])]
输出:
V3 V4 V7 V8 V9 V10
1 2 2 13 13 16 16
2 1 0 0 1 1 0
3 2 0 0 1 0 0
4 1 0 0 2 2 1
使用的一些数据:
#Data 1
A <- structure(list(V1 = c(1L, 0L, 0L, 1L), V2 = c(1L, 0L, 1L, 1L),
V3 = c(2L, 1L, 2L, 1L), V4 = c(2L, 0L, 0L, 0L), V5 = c(6L,
2L, 1L, 1L), V6 = c(6L, 1L, 2L, 1L), V7 = c(13L, 0L, 0L,
0L), V8 = c(13L, 1L, 1L, 2L), V9 = c(16L, 1L, 0L, 2L), V10 = c(16L,
0L, 0L, 1L)), class = "data.frame", row.names = c(NA, -4L
))
#Data 2
B <- structure(list(V1 = c(2L, 13L, 16L)), class = "data.frame", row.names = c(NA,
-3L))
推荐阅读
- angular - CORS 错误并非总是如此
- php - 联系表格有问题,无法从提交的表格接收电子邮件
- vue.js - 如何验证列表项而不在 Vuelidate 2.0 中呈现它?
- php - open cart 版本 3.0.2.0,(如何使用 Open cart 进行调试?)
- intellij-idea - 使用 WSL 在 IntelliJ 中设置环境变量
- python - 如何联系特定标签并更改其程序之一(例如其 bg)。而不是生产一个新的,我想更新一个旧的
- imsl - 无法使用 IMSL 数值库(许可证文件的位置)
- java - Spring boot 和 React 运行 maven 命令,但在 Localhost:8080 上给了我一个 whitelabel 错误页面
- github - 可以只用 Github Desktop 创建本地仓库吗
- javascript - 需要并行执行数组中的所有请求