r - 计算一行在不同数据集中出现的次数
问题描述
我有两个数据集 df1 和 df2
P1 <- c('A', 'A', 'B', NA)
P2 <- c('B', NA, 'B', 'B')
P3 <- c('A', 'B', 'B', 'A')
P4 <- c('A', 'B', NA, 'B')
P5 <- c(NA, NA, NA, 'B')
df1 <- data.frame(P1, P2, P3, P4, P5, row.names = NULL)
[![enter image description here][2]][2]P1 <- c('A', 'A', 'B', 'B', 'A', 'B', 'B', 'A')
P2 <- c('B', 'B', 'B', 'B', 'B', 'B', 'A', 'B')
P3 <- c('A', 'B', 'B', 'A', 'A', 'B', 'B', 'A')
P4 <- c('A', 'B', 'B', 'B', 'A', 'B', 'A', 'B')
P5 <- c('B', 'B','B', 'B', 'B', 'B', 'A', 'B')
df2 <- data.frame(P1, P2, P3, P4, P5, row.names = NULL)
我需要计算 df1 中的每一行出现在 df2 中的次数。如果 df1 中的值为 NA,则可以是 df2 中的 A 和 B。例如,df1 中的第 4 行将计为 df2 中的第 4 行和第 8 行。
解决方案
你可以试试
row_appears <- c()
for (i in 1:nrow(df1)){
x <- df1[i,]
y <- df1[i,]
x[is.na(x)] <- "A"
y[is.na(y)] <- "B"
z <- sum(apply(df2, 1, function(t) all(x == t)) + apply(df2, 1, function(t) all(y == t)))
row_appears <- c(row_appears, z)
}
row_appears
[1] 2 1 2 2
推荐阅读
- java - OpenCV:如何将所有非透明像素的颜色更改为黑色?
- android - Android Menu Popover 导致 Parentview 跳起来
- c - 输入时控制台退出
- python-3.x - 如何更改此代码,以便在给出数字时正确添加数字,如果给出两个字符串,则连接字符串
- javascript - 正则表达式可以找到这样的模式吗?
- bash - 通过 Jenkins 管道访问运行 Matlab 的 Docker Slave 的命令行
- swift - changeRootViewController时出现unknow error:EXC_BAD_ACCESS (code=1, address=0x20)
- graphql - 使用第一个查询结果作为第二个查询的条件
- c# - 循环加载用户配置文件
- regex - Oracle SQL Regex 美元符号不能确定字符串的结尾