我有一个没有像这样的列名的数据框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))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句