-3

假设我想查看一个年龄在 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

在我看来,这两个子集不太可能具有相同的手段。而且我无法弄清楚我做错了什么让它认为他们这样做。有人有想法么?

感谢帮助。自从开始这门课以来,我一直潜伏着堆栈溢出,这对我帮助很大。

4

2 回答 2

3

我发现使用[语法比subset. 您没有提供数据样本来帮助我们,但这样的事情应该可以工作。您的代码中肯定是指AND(&) 而不是OR(|) 吗?

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

另请查看此问题和答案。

于 2013-10-19T20:04:47.067 回答
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)之间的值,因此您需要使用&运算符。

于 2013-10-19T20:17:18.160 回答