gpt4 book ai didi

r - 将函数应用于同一组中的所有对

转载 作者:行者123 更新时间:2023-12-05 00:10:49 24 4
gpt4 key购买 nike

我想将一个函数应用于同一组中的所有项目对,例如

示例输入:

Group  Item   Value  
A 1 89
A 2 76
A 3 2
B 4 21
B 5 10

期望输出是同一组中所有项目的函数输出向量。

例如如果函数是:
addnums=function(x,y){  
x+y
}

那么所需的输出将是:
165, 91, 78, 31
我尝试使用 dplyr 包中的 summary 来做到这一点,但这只能在输出是单个值时使用。

最佳答案

我们可以split Value每个Group然后使用 combn计算 sum每对。

sapply(split(df$Value, df$Group), combn, 2, sum)

#$A
#[1] 165 91 78

#$B
#[1] 31

如果需要作为一个向量,我们可以使用 unlist .
unlist(sapply(split(df$Value, df$Group), combn, 2, sum), use.names = FALSE)
#[1] 165 91 78 31

如果您有兴趣 tidyverse使用我们可以做的相同逻辑的解决方案
library(dplyr)
library(purrr)

df %>%
group_split(Group) %>%
map(~combn(.x %>% pull(Value), 2, sum)) %>% flatten_dbl

#[1] 165 91 78 31

关于r - 将函数应用于同一组中的所有对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56378349/

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