gpt4 book ai didi

r - 多个同名列的统计信息

转载 作者:行者123 更新时间:2023-12-04 11:19:54 28 4
gpt4 key购买 nike

我有一个包含多列的巨大数据集,例如 x1 , x2 , x3 ...... x25 , y1 , y2 , y3 ...... y50 , z1 , z2 ....z10等等,看起来像这样:

x1  x2  x3  x4  y1  y2  y3  
1 2 1 2 1 1 2
2 1 1 1 3 1 1
1 2 2 1 1 2 1

我想要的是:
x_mean  x_min  x_max  x_mad  y_mean  y_min  y_max  y_mad
1.5 1 2 0.74 2 1 2 0
1.25 1 2 0 2 1 2 0
1.5 1 2 0.74 2 1 2 0

基本上,我需要计算 min , max , mad (中值绝对偏差)和 mean
> x_mean = (x1+x2+x3+x4)/4 = (1+2+1+2)/4 

其他行和其他统计数据也类似。我如何在 R 中做到这一点,最好是在 dplyr 中?

最佳答案

通常,您可以使用 summarise 的作用域变体喜欢 summarise_all ,在他们的 funs 中辅助函数可以接受任意数量的汇总函数。在您的情况下,您应该先 reshape 为长格式,以使您的数据 tidy (这里将观察从列移到行),因此使您的分析更简单:

library(tidyverse)

df <- read.table(text = 'x1 x2 x3 x4 y1 y2 y3
1 2 1 2 1 1 2
2 1 1 1 3 1 1
1 2 2 1 1 2 1', head = TRUE)

df_tidy <- df %>%
mutate(row = row_number()) %>% # keep position info
gather(var, val, -row) %>% # reshape to long
mutate(var = sub('\\d', '', var)) # extract letters from former colnames

df_summary <- df_tidy %>%
group_by(var, row) %>% # group by variable and original row
summarise_all(funs(min, max, mad)) # summarize with various functions

df_summary
#> # A tibble: 6 x 5
#> # Groups: var [?]
#> var row min max mad
#> <chr> <int> <dbl> <dbl> <dbl>
#> 1 x 1 1 2 0.7413
#> 2 x 2 1 2 0.0000
#> 3 x 3 1 2 0.7413
#> 4 y 1 1 2 0.0000
#> 5 y 2 1 3 0.0000
#> 6 y 3 1 2 0.0000

如果你愿意,你可以将它改回宽,但为了演示目的,我建议不要这样做。

关于r - 多个同名列的统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44607288/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com