我有两个人为心理测试编写相同的变量(超过400个变量),我需要比较数据集。我需要两个结果:1-我只需要查看具有不匹配和2-作为最终结果,我需要每个变量不匹配的百分比。
这里的意思是“每个变量的不匹配百分比”:
A <- tibble( ID = c(1:10),
v1 = rep(1),
v2 = rep(2),
v3 = rep(3))
B <- tibble( ID = c(1:10),
v1 = c(1,1,1,1,10,1,1,1,1,1),
v2 = c(30,2,2,2,51,2,2,2,2,40),
v3 = c(3,3,3,3,3,3,3,65,3,90))
A;B
# A tibble: 10 x 4
ID v1 v2 v3
<int> <dbl> <dbl> <dbl>
1 1 1 2 3
2 2 1 2 3
3 3 1 2 3
4 4 1 2 3
5 5 1 2 3
6 6 1 2 3
7 7 1 2 3
8 8 1 2 3
9 9 1 2 3
10 10 1 2 3
# A tibble: 10 x 4
ID v1 v2 v3
<int> <dbl> <dbl> <dbl>
1 1 1 30 3
2 2 1 2 3
3 3 1 2 3
4 4 1 2 3
5 5 10 51 3
6 6 1 2 3
7 7 1 2 3
8 8 1 2 65
9 9 1 2 3
10 10 1 40 90
我需要将数据集A与数据集B进行比较,并且我需要一个类似此表的结果:
result<- tibble(variables = c("v1", "v2", "v3"),
n.mismatch = c(1,3,2),
percentage.mismatch = c(0.10, 0.30, 0.20))
result
# A tibble: 3 x 3
variables n.mismatch percentage.mismatch
<chr> <dbl> <dbl>
1 v1 1 0.1
2 v2 3 0.3
3 v3 2 0.2
谢谢,
我们可以使用Map
:
as.data.frame(Map(function(x, y) {
inds <- x != y
c(n.mismatch = sum(inds), percentage.mismatch = mean(inds))
}, A[-1], B[-1]))
# v1 v2 v3
#n.mismatch 1.0 3.0 2.0
#percentage.mismatch 0.1 0.3 0.2