如何在R中统计每行exit值与各xi列值相等的次数?
R语言用ifelse实现每行exit与xi列的匹配次数统计
首先构造示例数据框:
df <- data.frame( exit = c(3, 4, 5, 6), x1 = c(4, 4, 4, 4), x2 = c(6, 6, 6, 6), x3 = c(6, 6, 6, 6), x4 = c(NA, NA, NA, NA) )
通过嵌套ifelse()处理缺失值并统计匹配次数:
# 新增n列,统计每行exit与x1-x4的相等次数 df$n <- ifelse(is.na(df$x1), 0, ifelse(df$x1 == df$exit, 1, 0)) + ifelse(is.na(df$x2), 0, ifelse(df$x2 == df$exit, 1, 0)) + ifelse(is.na(df$x3), 0, ifelse(df$x3 == df$exit, 1, 0)) + ifelse(is.na(df$x4), 0, ifelse(df$x4 == df$exit, 1, 0))
运行后得到的结果与期望一致:
| exit | x1 | x2 | x3 | x4 | n |
|---|---|---|---|---|---|
| 3 | 4 | 6 | 6 | NA | 0 |
| 4 | 4 | 6 | 6 | NA | 1 |
| 5 | 4 | 6 | 6 | NA | 0 |
| 6 | 4 | 6 | 6 | NA | 2 |
逻辑说明
- 对每个x列,先用
is.na()判断是否为缺失值,若是则记0(NA不参与匹配统计) - 若不是缺失值,再判断该x值是否等于当前行的
exit值,相等记1,不等记0 - 将四列的统计结果相加,得到每行的匹配总次数
n
内容的提问来源于stack exchange,提问作者aerw4
相关产品推荐
相关产品推荐

