如何统计R数据框指定列每行TRUE的数量并新增列存储结果
R统计数据框指定列每行TRUE数量的方法
你可以直接用rowSums()函数实现需求,该函数对逻辑值计数时会自动将TRUE识别为1、FALSE识别为0,统计结果直接存入新列即可。
基础R实现
# 示例数据框构造(可跳过,直接替换为你自己的df即可) df <- data.frame( A = rep("###", 3), B = c(TRUE, TRUE, FALSE), C = c(FALSE, TRUE, FALSE), D = c(TRUE, TRUE, FALSE), E = c(TRUE, TRUE, FALSE), F = rep("+", 3), H = rep("###", 3), I = rep("Text", 3) ) # 统计2-5列每行的TRUE数量,存入新列J df$J <- rowSums(df[, c(2:5)] == TRUE)
如果你的2-5列本身就是逻辑类型,== TRUE可以直接省略,写为rowSums(df[, c(2:5)])即可。该写法仅统计指定范围的列,完全不会涉及其他非目标列,避开了文本列出现"TRUE"被误统计的问题
tidyverse(dplyr)实现
library(dplyr) df <- df %>% mutate(J = rowSums(across(2:5, ~.x == TRUE)))
如果要按列名指定统计范围,把2:5替换为列名向量即可,例如c("B","C","D","E"),避免列顺序变动导致统计错误
运行后输出结果和你给出的期望输出完全一致:
A B C D E F H I J 1 ### TRUE FALSE TRUE TRUE + ### Text 3 2 ### TRUE TRUE TRUE TRUE + ### Text 4 3 ### FALSE FALSE FALSE FALSE + ### Text 0
内容的提问来源于stack exchange,提问作者Billy Mills
相关产品推荐
相关产品推荐

