首页 > 解决方案 > 在 for 循环中使用 if 语句根据条件计算行数

问题描述

我正在使用包 ggplot2 中的数据集 txhousing 并添加一列来检查中值的相对性能。

a <- summary(txhousing$median)
txhousing$cat <- ifelse(txhousing$median > a[which(names(a) == "Median")], "Hi", "Lo")

我只是想检查有多少数据点被归类为 Lo,并为它编写了这段代码

b <- 0
for (i in 1:nrow(txhousing)) {
  if (txhousing$cat[i] == "Lo") {
    b <- b + 1
  }
}

但我得到了错误

if (txhousing$cat[i] == "Lo") { 中的错误:需要 TRUE/FALSE 的缺失值

我究竟做错了什么?

标签: r

解决方案


如果我正确理解您的问题,您需要做的就是

sum(txhousing$cat == "Lo", na.rm= TRUE)
3995

这告诉您“有多少数据点被归类为 Lo”。如果你想知道Lo和Hi,你可以

table(txhousing$cat)

推荐阅读