如何计算均值和sd

时间:2015-09-11 14:40:29

标签: r

我需要4b的帮助

  1. 'Warpbreaks'是R中的内置数据集。使用函数数据(warpbreaks)加载它。它由每个织机的经纱断裂次数组成,其中织机对应于固定长度的纱线。它有三个变量,即断裂,羊毛和张力。

    湾对于“AM.warpbreaks”数据集,计算中断值不超过30 的观察值的中断和变量的平均值和标准差。

    data(warpbreaks)
    warpbreaks <- data.frame(warpbreaks)
    AM.warpbreaks <- subset(warpbreaks, wool=="A" & tension=="M")
    
    mean(AM.warpbreaks<=30)
    sd(AM.warpbreaks<=30)
    
  2. 这就是我理解这个问题并输入最后两行的代码。但是,当前3行成功运行时,我无法运行最后两行。谁能告诉我这里的错误是什么? 谢谢! :)

2 个答案:

答案 0 :(得分:1)

另一种方法: 这样你就不会生成一堆数据集,然后继续记住哪个是哪个。这更像是个人的事情。

data(warpbreaks)
mean(AM.warpbreaks[which(AM.warpbreaks$breaks<=30),"breaks"])
sd(AM.warpbreaks[which(AM.warpbreaks$breaks<=30),"breaks"])

答案 1 :(得分:0)

您的代码存在两个问题。第一个是您要比较30,但是您正在查看整个数据框,而不仅仅是“中断”列。

AM.warpbreaks$breaks <= 30

是一个表达中断小于30的表达式。

但是mean(AM.warpbreaks$breaks <= 30)也不会给出你想要的答案,因为R会将内部表达式计算为布尔值为TRUE / FALSE的向量,表示该中断是否小于30。

通常,您只想为此类分析采用另一个子集。

AM.lt.30 <- subset(AM.warpbreaks, breaks <= 30)
mean(AM.lt.30$breaks)
sd(AM.lt.30$breaks)