【发布时间】:2015-02-02 03:05:12
【问题描述】:
所以我在 R 子集方面遇到了这个相当基本的问题,但是因为我是新手,所以我不知道如何正确解决它。我有一些面板数据的例子:
idnr year sales space municipality pop
1 1 2004 110000 1095 136 71377
2 1 2005 110000 1095 136 71355
3 1 2006 110000 1095 136 71837
4 1 2007 120000 1095 136 72956
5 2 2004 35000 800 136 71377
6 3 2004 45000 1000 136 71377
7 3 2005 45000 1000 2584 23135
8 3 2006 45000 1000 2584 23258
9 3 2007 45000 1000 2584 23407
10 4 2005 180000 5000 2584 23254
11 4 2006 220000 5000 2584 23135
12 4 2007 250000 5000 2584 23258
所以我的问题是我想使用年份 = 2004 和(非或)年份 = 2005 的条件对数据进行子集化。但它似乎不起作用。代码:
tab3 <- stores[stores$year==2004 & stores$year==2005, c("idnr","year")]
我想说的是,我需要选择 2004 年和 2005 年都存在的数据,因为某些条目在 2004 年或 2005 年都存在,但两者都不存在,因此应该被排除在外。以上面的数据为例,应该是这样的输出:
idnr year
1 2004
1 2005
3 2004
3 2005
更新:
我希望 akrun 的方法可以用于选择仅在 2005 年出现的数据条目。这样:
idnr year
4 2005
不幸的是,它没有。相反,它将 2004 年和 2005 年出现的 idnr 与仅在 2005 年出现的 idnr 组合在一起。有什么想法吗?
【问题讨论】:
-
您不能同时拥有 2004 和 2005。您可以拥有 2004 或 2005。
-
多么不幸,因为我需要根据是否在 2004 年和 2005 年从整个列表中选择数据。因为有些条目只存在于 2004 年或 2005 年 - 这不够了。
-
这就是为什么你需要按照下面的回答做:使用
|而不是&。 -
使用 |而是包括 2004 年存在但 2005 年不存在的值以及其他方式(2005 年存在,但 2004 年不存在)。我想要做的是它子集 2004 年和 2005 年都存在的数据。
-
所以你的第一个陈述根本不清楚。