我正在尝试根据 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
我想得到一个数据集,其中排除了
tpens
的值大于2000的所有行,如果ireg
= 13(我需要维护tpens
和ireg
的所有其他值,如果 ireg
不同于 13).
我试过了
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 列上满足特定条件的行,但不删除所有其他内容?
我希望我能够解释自己
subset
或 filter
keeps 条件匹配的行。所以,你宁愿选择反向:
filter(data, !(ireg == 13 & tpens > 2000))
data %>% filter((ireg == 13 & tpens <= 2000) | ireg != 13)