如何解决分组行聚合并在R中起作用
我是r的新手,我想汇总以下矩阵
k n m s
1 g 10 11.8 2.4
2 g 20 15.3 3.2
3 g 15 8.4 4.1
4 r 14 3.0 5.0
5 r 16 6.0 7.0
6 r 5 8.0 15.0
结果:
k n s m
1 g 15 3.233333 7.31667
2 r 11.66667 9 4.16667
这是我的尝试:
k <- c("g","g","r","r")
n <- c(10,20,15,14,16,5)
m <- c(11.8,15.3,8.4,3,6,8)
s <- c(2.4,3.2,4.1,5,7,15)
data1 <- data.frame(k,n,m,s)
data2 <- aggregate(m ~ k,FUN = function(t) *********,data=data1)
我对m更感兴趣,这里是将第一行和第二行除以2(11.8 + 15.30)/ 2的顺序,然后将结果加到第三行并除以3,依此类推。 n和s只是平均值。
解决方法
这是您的功能:
data2 <- aggregate(
m ~ k,FUN = function(t) sum(t / factorial(length(t)) * factorial(seq_along(t) - 1)),data=data1)
data2
# k m
# 1 g 7.316667
# 2 r 4.166667
这是一个不寻常的功能,目的是什么?
如果要使用其他列的方式,我将使用dplyr
:
library(dplyr)
data1 %>%
group_by(k) %>%
summarize(
across(c(n,s),mean),across(m,~sum(. / factorial(length(.)) * factorial(seq_along(.) - 1)))
)
# # A tibble: 2 x 4
# k n s m
# <chr> <dbl> <dbl> <dbl>
# 1 g 15 3.23 7.32
# 2 r 11.7 9 4.17
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。