2

我是 R 新手,正在学习子集。我有一张桌子,我正在尝试获取表格子集的大小。我的问题是,当我尝试两种不同的方式时,我会得到两个不同的答案。对于我试图选择 RMS 为 5 且 BDS 为 2 的所有行的表“dat”:

dim(dat[(dat$RMS==5) & (dat$BDS==2),])

给了我一个不同的答案

dim(subset(dat,(dat$RMS==5) & (dat$BDS==2)))

第二个是正确的,有人可以解释为什么这些不同以及为什么第一个给我错误的答案?

谢谢

4

2 回答 2

5

原因一定是这两种方法对NA值的处理不同。如果您从数据框中删除带有 NA 的行,您应该得到相同的结果:

dat_clean = na.omit(dat)
于 2013-02-01T04:52:13.687 回答
2

为我工作......

> x = c(1,1,2,2,3,3)
> y = c(4,4,5,5,6,6)
> 
> X = data.frame(x,y)
> 
> dim(X[X$x==1 & X$y==4,])
  [1] 2 2
> 
> (X[X$x==1 & X$y==4,])
   x y
 1 1 4
 2 1 4

> dim(subset(X,(X$x==1) & (X$y==4)))
  [1] 2 2
> subset(X,(X$x==1) & (X$y==4))
  x y
1 1 4
2 1 4
于 2013-02-01T04:18:20.230 回答