【问题标题】:R Standard Deviation Across Rows跨行的 R 标准差
【发布时间】:2017-12-12 04:39:10
【问题描述】:

以下代码将对 iris 数据帧中每一行的第 1 列到第 4 列求和。

library(dplyr)
iris %>% mutate(sumVar = rowSums(.[1:4]))

对于 iris 数据框中的每一行,我如何计算这四列的标准差?我想避免使用列名并坚持使用列号。每次查询数据时,我的列名经常更改。这不起作用:

library(dplyr)
iris %>% mutate(stDev = sd(.[1:4]))

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    这应该可以解决问题。

    iris %>% mutate(stDev = apply(.[(1:4)],1,sd))
    

    【讨论】:

      【解决方案2】:

      我们可以将其转换为matrix,然后从matrixStats 执行rowSds

      library(matrixStats)
      library(dplyr)
      iris %>%
           mutate(stDev = rowSds(as.matrix(.[1:4])))
      

      【讨论】:

        【解决方案3】:

        这个基础 R 应该可以解决问题吗?

        apply(iris[ ,1:4],1,sd)
        

        【讨论】:

        • 是的 - 谢谢!简易基础 R 解决方案的粉丝!目前正在加载这么多奇怪的包。
        猜你喜欢
        • 2021-04-29
        • 2019-08-15
        • 1970-01-01
        • 2015-06-17
        • 1970-01-01
        • 2022-11-27
        • 2012-03-27
        • 1970-01-01
        • 2023-03-29
        相关资源
        最近更新 更多