当前位置: 首页 > 知识库问答 >
问题:

使用tapply函数生成均值的误差

於德馨
2023-03-14

嗨,我试着生成花瓣的平均值。宽度和萼片。iris数据集中每个物种的宽度。

然而,我得到了错误。

代码

tapply(iris$Species, iris$Petal.Width, mean)

其结果是0.1 0.2 0.3 0.4 0.5 0.6 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.1 2.2 2.3 2.4 2.5 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA有2 2个警告(使用警告()来查看它们)

tapply(iris$Species, iris$Sepal.Length , mean) 

导致4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.1 6.2 6.3 6.4 6.5 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 6.6 6.7 6.8 6.9 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA有35个警告(使用警告()查看它们)

共有2个答案

公冶伟
2023-03-14

一种tidyverse方法

library(tidyverse)

iris %>% 
  group_by(Species) %>% 
  summarise_at(.vars = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width'), .funs = mean)

# A tibble: 3 x 5
#  Species    Sepal.Length Sepal.Width Petal.Length Petal.Width
#  <fct>             <dbl>       <dbl>        <dbl>       <dbl>
#1 setosa             5.01        3.43         1.46       0.246
#2 versicolor         5.94        2.77         4.26       1.33 
#3 virginica          6.59        2.97         5.55       2.03 
逄嘉熙
2023-03-14

你的论点是错误的方式...

tapply(iris$Petal.Width, iris$Species, mean)
#    setosa versicolor  virginica 
#     0.246      1.326      2.026 

tapply(iris$Sepal.Length, iris$Species, mean)
#     setosa versicolor  virginica 
#     5.006      5.936      6.588

您是否考虑过数据。表是一种方法吗?

library(data.table)
iris <- data.table(iris)

# Calculate the mean for all columns by Species ...
iris[, lapply(.SD, mean, na.rm = TRUE), Species]
#      Species Sepal.Length Sepal.Width Petal.Length Petal.Width
# 1:     setosa        5.006       3.428        1.462       0.246
# 2: versicolor        5.936       2.770        4.260       1.326
# 3:  virginica        6.588       2.974        5.552       2.026

 类似资料:
  • 问题内容: 我想知道是否有一种简单的方法来生成2个数字,并确保一个数字可以被另一个整数整除。 这是我到目前为止所拥有的: 问题答案: 如果要生成两个数字a和b,其中除以b,即存在一个整数k,其中a * k = b,则可以随机生成a,然后随机生成k并将其乘以得到b。

  • 问题内容: 我希望函数计算Double型数组的平均值。该数组称为“投票”。现在,我有10个号码。 当我致电以获取阵列投票的平均值时,它不起作用。 这是我的代码: 我如何在此处称平均值以获得平均值? 问题答案: 您应该使用reduce()方法对数组求和,如下所示: Xcode Xcode 10.2+•Swift 5或更高版本 如果您需要使用类型的总和,那么它已经被协议扩展方法所涵盖,因此您只需要实现

  • 问题内容: 您能告诉我任何生成非均匀随机数的方法吗? 我正在使用Java,但是代码示例可以随心所欲。 一种方法是通过将两个统一的随机数加在一起(即滚动2个骰子)来创建歪斜分布。 问题答案: 您想要什么分布的偏差? 这是一种始终有效的技术,但并不总是最有效的。累积扰动函数P(x)给出值低于x的时间的分数。因此,在x的最小可能值处P(x)= 0,在x的最大可能值处P(x)= 1。每个分布都有一个唯一的

  • 我注意到我为C#代码生成不同的文件夹结构和文件扩展名,具体取决于我是使用Azure CLI(带有.csx脚本库的文件夹)还是Visual Studio(没有带有.cs类库的文件夹)。从 CLI 进行调试只会公开 .csx 终结点,反之亦然。 有没有可能配置Azure CLI使用类库生成函数?或者让CLI和Visual Studio提供相同的调试endpoint?

  • 我有有限的数据RV,我可以找到平均mu和标准差sigma。现在我想生成更多的数据点保持相同的mu和sigma。在MATLAB中我怎么做呢?我做了以下工作,但是当我绘制生成的数据(mu_2)的平均值时,它不匹配MU...

  • 我试图编写一个函数来返回