【发布时间】:2014-04-18 00:47:30
【问题描述】:
我有数据框“a”,它有一个名为“VAL”的变量。我想统计 VAL 的值为 23 或 24 的元素。
我使用了两个运行良好的代码:
nrow(subset(a,VAL==23|VAL==24)
nrow(subset(a,VAL %in% c(23,24)))
但是,我尝试了其他代码,它给出了意外的输出,我不知道为什么。
nrow(subset(a,VAL ==c(23,24)))
即使我改变 23 和 24 的顺序,它也会给出不同的意外输出。
nrow(subset(a,VAL ==c(24,23)))
为什么这些代码不正确?他们到底在做什么?
【问题讨论】:
-
您应该提供一些示例数据。
-
Thelatmail 击败了我,但我想指出您不需要使用
subset,而是使用nrow(a[a$VAL==23|a$VAL==24])。有些人更喜欢subset,但我一直喜欢这样做。 -
@CCurtis,您的建议同样低效:无需创建整个 sub-data.frame 然后计算行数。相反,只需使用矢量:
sum(a$VAL %in% c(23,24), na.rm = TRUE)。 -
@flodel 我从来没有说过这是一种更有效的方法,只是它是一种替代方法。是的,你是对的,创建和求和单个向量而不是在整个数据框中创建和计算行更快。