gpt4 book ai didi

r - 如何仅汇总表格的一部分?

转载 作者:行者123 更新时间:2023-12-03 12:10:38 25 4
gpt4 key购买 nike

我有两个相关的用例,我需要总结表格的一部分,以类似于 filter 的方式指定。 .

简而言之,我想要这样的东西:

iris %>%
use_only(Species == 'setosa') %>%
summarise_each(funs(sum), -Species) %>%
mutate(Species = 'setosa_sum') %>%
use_all()

要产生这个:
Source: local data frame [101 x 5]

Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 250.3 171.4 73.1 12.3 setosa_sum
2 7.0 3.2 4.7 1.4 versicolor
3 6.4 3.2 4.5 1.5 versicolor
4 6.9 3.1 4.9 1.5 versicolor
5 5.5 2.3 4.0 1.3 versicolor


因此,我没有按列的值进行分组,而是使用过滤条件对表的 View 进行操作,而实际上不会丢失表的其余部分(与过滤器不同)。

如何智能实现 use_only/use_all ? 更好的是,此功能是否已包含在 dplyr 中?我该如何使用它?

生成上面的结果当然很容易,但我需要为许多不同的情况做类似的事情,过滤条件复杂多变。

最佳答案

我认为您搜索满足该特定语法的函数的方法过于严格。这就是我使用 data.table 会做的事情(我不确定 dplyr 是否允许像这样的可变行,我知道它已经是 FR 一段时间了):

library(data.table)
dt = as.data.table(iris)

dt[, if (Species == 'setosa') lapply(.SD, sum) else .SD, by = Species]
# Species Sepal.Length Sepal.Width Petal.Length Petal.Width
# 1: setosa 250.3 171.4 73.1 12.3
# 2: versicolor 7.0 3.2 4.7 1.4
# 3: versicolor 6.4 3.2 4.5 1.5
# 4: versicolor 6.9 3.1 4.9 1.5
# 5: versicolor 5.5 2.3 4.0 1.3
# ---

您也可以添加 [Species == 'setosa', Species := 'setosa_sum']最后将名称修改到位。扩展到多个标准/任何功能应该很简单。

关于r - 如何仅汇总表格的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29784525/

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