首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >连续误差与总结函数dplyr

连续误差与总结函数dplyr
EN

Stack Overflow用户
提问于 2021-08-10 19:11:30
回答 2查看 739关注 0票数 2

我试图使用Site函数计算分组summarize中所有变量的平均值、中值、最小值和最大值。在我的代码中,我将NA替换为0,但如果易于合并,也可以使用na.rm=TRUE

我一直收到下面的错误消息,我想不出.

代码语言:javascript
运行
复制
Error: Problem with `summarise()` input `..2`. i `..2 = list(mean, median, min, max)`. x `..2` must be size 6 or 1, not 4. i An earlier column had size 6. i The error occurred in group 1: Site = 1.

下面是我的数据和代码:

数据集Reprex

代码语言:javascript
运行
复制
data = structure(list(Site = c(7, 1, 7, 7, 1, 1, 7, 1, 6, 1, 1), OS_days = c(264, 
208, 184, 145, 131, 116, 82, 74, 76, 82, 68), ster_days = c(241, 
135, 184, NA, 85, 106, NA, NA, NA, NA, 69), pct_ster = c(0.912878787878788, 
0.649038461538462, 1, NA, 0.648854961832061, 0.913793103448276, 
NA, NA, NA, NA, 1.01470588235294), first_ster_days = c(28, 72, 
1, NA, 42, 1, NA, NA, NA, NA, 1), tot_bev_days = c(1, 13, NA, 
NA, NA, 75, NA, NA, NA, NA, NA), pct_bev = c(0.00378787878787879, 
0.0625, NA, NA, NA, 0.646551724137931, NA, NA, NA, NA, NA), first_bev_days = c(48, 
86, NA, NA, NA, 22, NA, NA, NA, NA, NA), SPD = structure(c(1219.86, 
1107, 1508, 442.74, 524.61, 1733.76, 2079.77, 443.44, NA, 601.8, 
1621.3), label = "Measurement Number 1 mm")), row.names = c(NA, 
-11L), class = c("tbl_df", "tbl", "data.frame"))
代码语言:javascript
运行
复制
knitr::kable(data, digits = 3)


| Site| OS_days| ster_days| pct_ster| first_ster_days| tot_bev_days| pct_bev| first_bev_days|     SPD|
|----:|-------:|---------:|--------:|---------------:|------------:|-------:|--------------:|-------:|
|    7|     264|       241|    0.913|              28|            1|   0.004|             48| 1219.86|
|    1|     208|       135|    0.649|              72|           13|   0.062|             86| 1107.00|
|    7|     184|       184|    1.000|               1|           NA|      NA|             NA| 1508.00|
|    7|     145|        NA|       NA|              NA|           NA|      NA|             NA|  442.74|
|    1|     131|        85|    0.649|              42|           NA|      NA|             NA|  524.61|
|    1|     116|       106|    0.914|               1|           75|   0.647|             22| 1733.76|
|    7|      82|        NA|       NA|              NA|           NA|      NA|             NA| 2079.77|
|    1|      74|        NA|       NA|              NA|           NA|      NA|             NA|  443.44|
|    6|      76|        NA|       NA|              NA|           NA|      NA|             NA|      NA|
|    1|      82|        NA|       NA|              NA|           NA|      NA|             NA|  601.80|
|    1|      68|        69|    1.015|               1|           NA|      NA|             NA| 1621.30|

代码语言:javascript
运行
复制
data %>%
  replace(is.na(.), 0) %>%
  group_by(Site) %>%
  dplyr::summarise(across(c(OS_days, ster_days, pct_ster, first_ster_days, tot_bev_days, pct_bev, first_bev_days, SPD)), list(mean, median, min, max)) 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-10 19:12:51

across )的括号过早关闭。

代码语言:javascript
运行
复制
library(dplyr)
data %>%
  replace(is.na(.), 0) %>% 
  group_by(Site) %>%
  dplyr::summarise(across(c(OS_days, ster_days, pct_ster, 
      first_ster_days, tot_bev_days, pct_bev, first_bev_days, SPD), 
        list(mean, median, min, max)))

-output

代码语言:javascript
运行
复制
# A tibble: 3 x 33
   Site OS_days_1 OS_days_2 OS_days_3 OS_days_4 ster_days_1 ster_days_2 ster_days_3 ster_days_4 pct_ster_1 pct_ster_2 pct_ster_3 pct_ster_4 first_ster_days_1
  <dbl>     <dbl>     <dbl>     <dbl>     <dbl>       <dbl>       <dbl>       <dbl>       <dbl>      <dbl>      <dbl>      <dbl>      <dbl>             <dbl>
1     1      113.       99         68       208        65.8          77           0         135      0.538      0.649          0       1.01             19.3 
2     6       76        76         76        76         0             0           0           0      0          0              0       0                 0   
3     7      169.      164.        82       264       106.           92           0         241      0.478      0.456          0       1                 7.25
# … with 19 more variables: first_ster_days_2 <dbl>, first_ster_days_3 <dbl>, first_ster_days_4 <dbl>, tot_bev_days_1 <dbl>, tot_bev_days_2 <dbl>,
#   tot_bev_days_3 <dbl>, tot_bev_days_4 <dbl>, pct_bev_1 <dbl>, pct_bev_2 <dbl>, pct_bev_3 <dbl>, pct_bev_4 <dbl>, first_bev_days_1 <dbl>,
#   first_bev_days_2 <dbl>, first_bev_days_3 <dbl>, first_bev_days_4 <dbl>, SPD_1 <dbl>, SPD_2 <dbl>, SPD_3 <dbl>, SPD_4 <dbl>
票数 3
EN

Stack Overflow用户

发布于 2021-08-10 20:02:41

非常感谢阿肯指导了我。这是一个基本的R解。

代码语言:javascript
运行
复制
# function with all functions to apply
multi.fun <- function(x) {
    c(mean = mean(x), median = median(x), min = min(x), max = max(x))
}

# replace NA with 0
data[is.na(data)] <- 0 

# group by Site and apply function multi.fun
my_list <- lapply(split(data, data$Site), function(x) sapply(x, multi.fun))

# convert to df
do.call(rbind, my_list)

输出:

代码语言:javascript
运行
复制
       Site  OS_days ster_days  pct_ster first_ster_days tot_bev_days      pct_bev first_bev_days      SPD
mean      1 113.1667  65.83333 0.5377321        19.33333     14.66667 0.1181752874             18 1005.318
median    1  99.0000  77.00000 0.6489467         1.00000      0.00000 0.0000000000              0  854.400
min       1  68.0000   0.00000 0.0000000         0.00000      0.00000 0.0000000000              0  443.440
max       1 208.0000 135.00000 1.0147059        72.00000     75.00000 0.6465517241             86 1733.760
mean      6  76.0000   0.00000 0.0000000         0.00000      0.00000 0.0000000000              0    0.000
median    6  76.0000   0.00000 0.0000000         0.00000      0.00000 0.0000000000              0    0.000
min       6  76.0000   0.00000 0.0000000         0.00000      0.00000 0.0000000000              0    0.000
max       6  76.0000   0.00000 0.0000000         0.00000      0.00000 0.0000000000              0    0.000
mean      7 168.7500 106.25000 0.4782197         7.25000      0.25000 0.0009469697             12 1312.592
median    7 164.5000  92.00000 0.4564394         0.50000      0.00000 0.0000000000              0 1363.930
min       7  82.0000   0.00000 0.0000000         0.00000      0.00000 0.0000000000              0  442.740
max       7 264.0000 241.00000 1.0000000        28.00000      1.00000 0.0037878788             48 2079.770
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68732364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档