r - 如果列值为x,有没有办法总结?
问题描述
我正在尝试制作一个data.frame
显示个人显示行为的平均时间。
我一直在使用group_by
andsummarise
来计算各组的平均值。但是输出向下很多行。查看使用 iris 数据集的示例...
data(iris)
x <- iris %>%
group_by(Species, Petal.Length) %>%
summarise(mean(Sepal.Length))
对于这个例子,我想得到一个输出,每个“物种”有一行,每个“Petal.Length”有一列平均值。
我已经求助于创建多个输出,然后使用left_join
将它们组合成所需的data.frame
. 请参见下面的示例...
a <- iris %>%
group_by(Species) %>%
filter(Petal.Length == 0.1) %>%
summarise(mean(Sepal.Length))
b <- iris %>%
group_by(Species) %>%
filter(Petal.Length == 0.2) %>%
summarise(mean(Sepal.Length))
left_join(a, b)
但是,一次执行 12 次或更多次是乏味的,我相信必须有一种简单的方法可以mean(Sepal.Length)
在一个输出中获得 'Petal.Length' 0.1、0.2 和 0.3(等)。
我的数据中的 nbPetal.Length
实际上是代表行为的字符,并且Sepal.Length
是持续时间
解决方案
一些想法:
library(tidyverse)
data(iris)
mutate(iris, Petal.Length_discrete = cut(Petal.Length, 5)) %>%
group_by(Species, Petal.Length_discrete) %>%
summarise(mean(Sepal.Length))
#> `summarise()` has grouped output by 'Species'. You can override using the `.groups` argument.
#> # A tibble: 7 x 3
#> # Groups: Species [3]
#> Species Petal.Length_discrete `mean(Sepal.Length)`
#> <fct> <fct> <dbl>
#> 1 setosa (0.994,2.18] 5.01
#> 2 versicolor (2.18,3.36] 5
#> 3 versicolor (3.36,4.54] 5.81
#> 4 versicolor (4.54,5.72] 6.43
#> 5 virginica (3.36,4.54] 4.9
#> 6 virginica (4.54,5.72] 6.32
#> 7 virginica (5.72,6.91] 7.25
iris %>%
group_split(Species, Petal.Length) %>%
map(~ summarise(.x, mean(Sepal.Length))) %>%
head(3)
#> [[1]]
#> # A tibble: 1 x 1
#> `mean(Sepal.Length)`
#> <dbl>
#> 1 4.6
#>
#> [[2]]
#> # A tibble: 1 x 1
#> `mean(Sepal.Length)`
#> <dbl>
#> 1 4.3
#>
#> [[3]]
#> # A tibble: 1 x 1
#> `mean(Sepal.Length)`
#> <dbl>
#> 1 5.4
由reprex 包于 2021-06-28 创建 (v2.0.0 )
推荐阅读
- if-statement - 搜索值时 LEN 和 <>"" 有什么区别?
- assembly - 如何在 x86 实模式下正确设置 SS、BP 和 SP?
- r - summarytools:如何编辑变量名称或在 dfSummary() 输出中添加文本?
- excel - 带有公式的 VBA 应用程序定义或对象定义错误
- javascript - 关于动态页面元标记的基本问题
- java - 我该如何解决这个“replaceAll”错误?
- angular7 - 使用小数管道将输入数值限制为 2 位小数
- phpunit - 在 travis ci 上使用 gnu 并行时如何快速识别 phpunit 错误/故障
- google-kubernetes-engine - Istio gRPC-Web 配置
- asp.net - 在 MySQL 中插入数据