> cat = data.frame(decsorgs, age, degree, race, class, marital, region,
+ relig, sex, srcbelt, born, partyid, WTSSALL)
> dim(cat)
[1] 1129 13
> cat = subset(cat, decsorgs & age & degree & race & class & marital & region &
+ relig & sex & srcbelt & born & partyid & WTSSALL)
> dim(cat)
[1] 13 13
正如你所看到的,我的子集之前有1129,之后只有13。这是为什么?我试图制作一个仅包含race=0
行的子集。然而,即使我没有设定这种条件,仅仅分组的行为也会减少观察。请帮忙。我已经用了3个小时就可以了。感谢
答案 0 :(得分:3)
在R中,0
在使用FALSE
进行投射时会转换为as.logical
。你想要这样的东西:
cat <- cat[cat$race == 0, ]
答案 1 :(得分:3)
解释原始尝试的实际情况:在R中,数字被视为&#34; true&#34;如果他们非零,并且&#34;假&#34;当他们重新为0. decsorgs & age & degree
告诉R找到所有3列不为零的行。一个简单的例子:
> eg_df = expand.grid(a=0:1, b=0:1, c=0:1)
> eg_df
a b c
1 0 0 0
2 1 0 0
3 0 1 0
4 1 1 0
5 0 0 1
6 1 0 1
7 0 1 1
8 1 1 1
# Any rows with a 0 value are dropped
> subset(eg_df, a & b & c)
a b c
8 1 1 1
我认为您的意图只是将这些列包含在您的子集中
是select
参数的作用:
# Drop rows where a or b are 0, include columns b and c:
subset(eg_df, a & b, select=c("b", "c"))