我试图删除我的数据集中符合2列中的特定值的行,但似乎我设置它在错误的方式。
这里是一个数据集示例
nquest nord sex anasc ireg eta staciv studio ID tpens
<int> <int> <dbl> <int> <int> <int> <int> <int> <int> <int>
1 173 1 1 1948 18 72 3 5 1 1800
2 2886 1 1 1949 13 71 1 5 2 1211
3 2886 2 0 1952 13 68 1 6 3 2100
4 5416 1 0 1958 8 62 3 3 4 700
5 7886 1 1 1950 9 70 1 5 5 2000
6 20297 1 1 1960 5 60 1 3 6 1200
7 20711 2 1 1944 4 76 1 2 7 2000
8 22169 1 0 1944 15 76 4 2 8 600
9 22276 1 1 1949 8 71 2 5 9 1200
10 22286 1 1 1950 8 70 1 2 10 850
11 22286 2 0 1956 8 64 1 2 11 650
12 22657 1 0 1951 13 69 1 7 12 2400
13 22657 2 1 1946 16 74 1 5 13 1500
14 23490 1 0 1937 5 83 2 5 14 1400
15 24147 1 1 1948 4 72 1 7 15 1730
16 24147 2 0 1958 4 62 1 5 16 1600
17 24853 1 1 1957 13 63 1 3 17 2180
18 27238 1 1 1952 12 68 1 3 19 1050
19 27730 1 1 1939 20 81 1 2 20 1470
20 27734 1 1 1947 20 73 1 2 21 1159
如果ireg
= 13,我想获得一个数据集,其中排除了tpens
值大于2000的所有行(如果ireg
不等于13,我需要保留tpens
和ireg
的所有其他值)。
我试过了
new <- subset(data, data$ireg == 13 & data$tpens <= 2000)
但这是错误的,因为即使tpens
现在小于2000,它也给我一个只有ireg
== 13的数据集。实际上,我需要维护ireg
的所有其他值(以及与它们链接的tpens
值)。
我也试过
new <-data [!(data$ireg == 13 & data$tpens <= 2000),]
但是还是一样的,即使用dplyr的filter
,我好像也不能把条件设置好
我怎样才能同时删除2列上满足特定条件的行,而不删除所有其他内容?
我希望我能解释清楚
2条答案
按热度按时间eqqqjvef1#
subset
或filter
* 保留 * 条件匹配的行。因此,您更希望反向选择:7rtdyuoh2#