R子集函数:为什么它包含非子集化数据?

时间:2014-12-19 09:18:13

标签: r subset

我正在接受Datacamp的数据分析和统计推断。以下是与全球宗教信仰和无神论指数相关的代码,以及美国2012年数据的子集。

load(url("http://s3.amazonaws.com/assets.datacamp.com/course/dasi/atheism.RData"))
us12 = subset(atheism, atheism$nationality == "United States" & atheism$year =="2012")

我的问题是,当我输入

时,为什么会看到其他国家/地区
table(us12)

有没有办法可以只对过滤后的数据进行子集化?

感谢。

1 个答案:

答案 0 :(得分:3)

由于us12data.frame,其中nationalityresponse列为factors,包括原始data.frame的所有级别。

事实上,table(us12)会向您返还计数,正如您所看到的,与美国不同的国籍的所有计数均为零。

如果这对您有用,您可以使用droplevels功能删除data.frame中实际不存在的级别:

> us12dropped=droplevels(us12)
> table(us12dropped)
, , year = 2012

               response
nationality     atheist non-atheist
  United States      50         952