我想看看年龄在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
我似乎不太可能这两个子集具有相同的手段。我无法弄清楚我做错了让它认为他们做了什么。有人有什么想法吗?
感谢帮助。自从上课以来我就潜伏着堆栈溢出,这对我帮助很大。
答案 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),因此您需要使用&
运算符。