似乎无法获得在r中工作的subset()

时间:2013-10-19 19:57:44

标签: r subset

我想看看年龄在55到100岁之间的子集,看看他们的医疗保健费用。

我用过:

Elders <- subset(midus, Age>= 55 | Age<100)
mean(Elders$Cost, na.rm=TRUE)
#78.8445

我明白这应该给我55到100之间的人的平均成本。在这种情况下,它是78.8445

听起来不错。但是,要检查一下,我将其与95-100岁进行比较:

Elders2<-subset(midus,Age>=95 | Age<100)
mean(Elders2$Cost, na.rm=TRUE)
#78.8445

我似乎不太可能这两个子集具有相同的手段。我无法弄清楚我做错了让它认为他们做了什么。有人有什么想法吗?

感谢帮助。自从上课以来我就潜伏着堆栈溢出,这对我帮助很大。

2 个答案:

答案 0 :(得分:3)

我发现使用[语法比subset更容易混淆。您还没有提供数据样本来帮助我们,但是这样的事情应该有效。你的代码中肯定是AND(&amp;)而不是OR(|)?

Elders <- midus[midus$Age >= 55 & midus$Age < 100, ]

同时查看this question和答案。

答案 1 :(得分:2)

以下是使用subset

的解决方案
> # generating some data
> set.seed(1)
> midus <- data.frame(ID=1:50,
+                     Age=sample(20:100, 50, TRUE), 
+                     Cost=rnorm(50, 100, 3))
> 
> Elders <- subset(midus, Age>= 55 & Age<100) # subseting
> mean(Elders$Cost) 
[1] 100.2068
> 
> Elders2<-subset(midus, Age>=95 & Age<100)
> mean(Elders2$Cost)
[1] 98.78458

如您所见,只需将|更改为&即可获得所需内容。这是因为您希望Age的值介于55和100之间(不包括100),因此您需要使用&运算符。