Проблема, как уже указывали другие, NA
с.
В вашем цикле вы можете решить эту проблему, по крайней мере, несколькими способами.
1: добавьте еще одно условие, чтобы, если cat[i]
не равно NA
, а cat[i]
равно Lo
, то приращение.
2: обернуть условие в isTRUE()
, которое возвращает TRUE
, если TRUE
, иначе FALSE
, нет NA
с.
b <- 0
for (i in 1:nrow(txhousing)) {
if (!is.na(txhousing$cat[i]) & txhousing$cat[i] == "Lo") {
b <- b + 1
}
}
b <- 0
for (i in 1:nrow(txhousing)) {
if (isTRUE(txhousing$cat[i] == "Lo")) {
b <- b + 1
}
}
schwantke, конечно, прав в том, что сумма по соответствующему столбцу является наиболее предпочтительной, и что table()
следует учитывать.
Однако реальная сила table()
- это когда вы хотите комбинировать уровни. Допустим, вы хотите узнать количество Lo
и Hi
в год или в каждом городе
(tab.y <- with(txhousing, table(year, cat)))
(tab.c <- with(txhousing, table(city, cat)))
margin.table(tab.y, margin=2)
cat
Hi Lo
3991 3995