列和rbind上的多个操作
我想用列和rbind上的多个操作,r,dplyr,R,Dplyr,我想用dplyr计算平均值、中位数和其他一些东西。由于我只读了几篇介绍(大部分都很老),我想知道以下内容是否可行: iris %>% group_by_("Species") %>% summarise_at(.vars = vars(starts_with("Sepal")), .funs=perform_some_operation) # A tibble: 6 x 4 Species Sepal.Length Sepal.Width Operation
dplyr
计算平均值、中位数和其他一些东西。由于我只读了几篇介绍(大部分都很老),我想知道以下内容是否可行:
iris %>% group_by_("Species") %>%
summarise_at(.vars = vars(starts_with("Sepal")), .funs=perform_some_operation)
# A tibble: 6 x 4
Species Sepal.Length Sepal.Width Operation
<fctr> <dbl> <dbl> <fctr>
1 setosa 5.006 3.428 mean
2 versicolor 5.936 2.770 mean
3 virginica 6.588 2.974 mean
4 setosa 5.0 3.4 median
5 versicolor 5.9 2.8 median
6 virginica 6.5 3.0 median
iris%>%按物种分组%>%
在(.vars=vars(从(“萼片”)开始)处总结,.funs=执行一些操作)
#一个tibble:6x4
种萼片。长度萼片。宽度操作
1 setosa 5.006 3.428平均值
2花色5.936 2.770平均值
3弗吉尼亚州平均6.588 2.974
4刚毛5.0 3.4中位数
5彩色5.9 2.8中位数
6弗吉尼亚州6.5 3.0中位数
为了清晰起见,只添加了操作
-列。我不是绝对需要它
到目前为止,我唯一能找到的是在(.vars=vars(以(“萼片”)开始)和.funs=c(Mean=“Mean”,Median=“media”)上总结。然而,这首先是缓慢的,其次是以列而不是行的形式创建额外的输出
编辑:我不需要生成结果的操作,而是在
summary\u at
中 这就是想法。诀窍是收集并清理熔化的colname,即
library(tidyverse)
iris %>%
group_by(Species) %>%
select(starts_with('Sepal')) %>%
summarise_all(funs(n1 = mean, n2 = median)) %>%
gather(var, val, -Species) %>%
mutate(var = gsub('_.*', '', var)) %>%
group_by(var) %>%
mutate(new = seq(n())) %>%
spread(var, val) %>%
arrange(new) %>%
select(-new)
#Adding missing grouping variables: `Species` - Innocent warning
#一个tible:6 x 3
种萼片。长萼片。宽
1 setosa 5.006 3.428
2花色5.936 2.770
3弗吉尼亚州6.5882.974
4 setosa 5.000 3.400
5花色5.900 2.800
6弗吉尼亚州6.500 3.000
现在还不清楚你想要什么,因为我认为你所说的正是你想要的。“操作”列的要点是什么?除了按物种分组外,您是否只希望对每个列的某些部分应用平均值或中位数?或者你只想对萼片应用平均值。长度和中间值。萼片。宽度?正如我在代码下面写的。操作栏用于澄清前三行是物种的平均值。我希望将平均值和中值应用于所有带有“Sepal”的列。感谢您提供的快速解决方案。一般来说,这似乎与在(.vars=vars(以(“萼片”)开头),.funs=c(n1=”平均值“,n2=”中间值”)
中使用总结相同。至少在第三行和第四行。
# A tibble: 6 x 3
Species Sepal.Length Sepal.Width
<fctr> <dbl> <dbl>
1 setosa 5.006 3.428
2 versicolor 5.936 2.770
3 virginica 6.588 2.974
4 setosa 5.000 3.400
5 versicolor 5.900 2.800
6 virginica 6.500 3.000