如何在R语言数据框中统计第5列逻辑值的TRUE数量?
统计数据框第5列中TRUE的数量(R语言)
嘿,我来帮你搞定这个问题!你原来的代码没法统计所有TRUE的核心原因是:if (students[, 5] == "TRUE")会把整个第5列和字符串"TRUE"做比较,得到一个逻辑向量,但if语句只会判断这个向量的第一个元素,所以只会执行一次计数操作,自然没法遍历所有值。
其实在R里做这件事超级简单,根本不用写循环或者手动判断,有两种常用的极简方法:
方法1:直接用sum()(适用于列是逻辑型的情况)
因为R会自动把逻辑值TRUE当作1,FALSE当作0,直接对这一列求和就能得到TRUE的数量:
num_better_at_math <- sum(students[, 5], na.rm = TRUE)
- 加
na.rm = TRUE是为了忽略列中的NA值(如果有的话),避免求和结果变成NA;如果确定没有NA,可以去掉这个参数。
方法2:先转逻辑型再求和(适用于列是字符型的"TRUE"/"FALSE"情况)
如果你的第5列是字符类型(比如存的是"TRUE"/"FALSE"字符串),可以先用as.logical()转成逻辑型再求和:
num_better_at_math <- sum(as.logical(students[, 5]), na.rm = TRUE)
这样几行代码就能搞定,比手动写循环高效多啦!
内容的提问来源于stack exchange,提问作者R.Kim
相关产品推荐
相关产品推荐

