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

r按id划分的列和行的标准偏差

邢思淼
2023-03-14

我有几个数据帧看起来类似于以下数据帧(包含更多列):

id col1 col2 col3 col4 col5
1   4    3    5    4    A
1   3    5    4    9    Z
1   5    8    3    4    H
2   6    9    2    1    B
2   4    9    5    4    K
3   2    1    7    5    J
3   5    8    4    3    B
3   6    4    3    9    C

我想计算由id分组的特定列(比如col2到col4)的均方差。我不知道每个数据帧中的列索引。我只知道我想计算均方差的列的名称。

有没有什么方法可以很容易地做到这一点?我的原始数据帧包含大约20列,我只想要10列的均方差,这些列具有由id分组的特定列名。

最重要的是,如果我可以根据id直接将计算的标准偏差作为新列添加到我的数据框中,就好了,如下所示:

id col1 col2 col3 col4 col5 SD
1   4    3    5    4    A   SD1
1   3    5    4    9    Z   SD1
1   5    8    3    4    H   SD1
2   6    9    2    1    B   SD2
2   4    9    5    4    K   SD2
3   2    1    7    5    J   SD3
3   5    8    4    3    B   SD3
3   6    4    3    9    C   SD3

共有2个答案

司寇善
2023-03-14

使用< code>data.table

library(data.table)
setDT(df)[,  SD :=   sd(unlist(.SD)), id, .SDcols = col2:col4]
贝凯
2023-03-14

您可以尝试:

library(dplyr)
df %>%
  group_by(id) %>%
  mutate(SD = sd(unlist(select(cur_data(), col2:col4))))

#    id  col1  col2  col3  col4 col5     SD
#  <int> <int> <int> <int> <int> <chr> <dbl>
#1     1     4     3     5     4 A      2.12
#2     1     3     5     4     9 Z      2.12
#3     1     5     8     3     4 H      2.12
#4     2     6     9     2     1 B      3.41
#5     2     4     9     5     4 K      3.41
#6     3     2     1     7     5 J      2.62
#7     3     5     8     4     3 B      2.62
#8     3     6     4     3     9 C      2.62
 类似资料:
  • 我对标准差的计算有点执着,如果你能在下面的两个问题上给我一些帮助,那就太好了。 代码 问题1:我如何计算这个的标准误差(平均值的标准偏差)? 代码 问题2:如何计算累积标准偏差? 非常感谢!!(很抱歉数据格式错误!)

  • 我尝试使用< code>rowSds()来计算每一行的标准偏差,这样我就可以选择具有高标准偏差的行来绘制图表。 我的数据帧名为<code>xx 我试图计算每一行的标准偏差,并辅助sd列名: 我得到这个错误: 知道在计算SD时如何省略吗?我的语法正确吗?

  • 我有一个集合列表和每个集合的一些基本统计数据(项目数、最小值、最大值、平均值、标准差)。我想计算所有集合的相同统计数据。计算总计数、最小最大值和平均值很容易,但我不确定如何计算总标准偏差。 数据如下所示: 同时生成所有集合的统计信息:

  • 我正试图用汽车预测时间序列。阿里玛。我需要的是分割训练和测试数据,以查看模型指标。我的日期范围是2016年12月至2020年1月。我需要2018年12月之前的列车数据,以及之后的测试。 除此之外,我还需要每个id的指标RMSE和MSE。这是我的数据的一个例子: 我尝试使用dplyr: 但我不知道如何添加训练和测试的步骤以及指标。有人知道怎么解决吗?谢谢

  • 我有一个10data.frames的列表,我只需要为每个data.frame划分两列,然后计算相对均方差。 我想用lapplication。 下面是列表中包含的一个data.frame的示例: 我必须对我的所有10个数据帧执行以下操作:

  • 返回数组数组的标准偏差。 使用 Array.reduce() 来计算均值,方差已经值的方差之和,方差的值,然后确定标准偏差。 您可以省略第二个参数来获取样本标准偏差,或将其设置为 true 以获得总体标准偏差。 const standardDeviation = (arr, usePopulation = false) => { const mean = arr.reduce((acc, va