gpt4 book ai didi

r - 使用 tapply 将多个函数应用于列

转载 作者:行者123 更新时间:2023-12-04 09:21:38 32 4
gpt4 key购买 nike

有人可以指出我们如何使用tapply(或任何其他方法,plyr等)将多个函数应用于同一列,以便可以在不同的列中获得结果)。例如,如果我有一个数据框

User  MoneySpent
Joe 20
Ron 10
Joe 30
...

我想将结果作为 MoneySpent + 出现次数的总和。

我使用了一个类似的函数——
f <- function(x) c(sum(x), length(x))
tapply(df$MoneySpent, df$Uer, f)

但这不会把它分成几列,给出类似的东西,
Joe    Joe    100, 5   # The sum=100, number of occurrences = 5, but it gets juxtaposed

提前致谢,

拉吉

最佳答案

你当然可以用 ddply 来做这样的事情。来自 plyr包裹:

dat <- data.frame(x = rep(letters[1:3],3),y = 1:9)

ddply(dat,.(x),summarise,total = NROW(piece), count = sum(y))
x total count
1 a 3 12
2 b 3 15
3 c 3 18

如果您愿意,您可以继续列出更多的汇总函数,而不仅仅是两个。请注意,我在这里调用 NROW 时有点棘手。 ddply 中的内部变量调用 piece .你可以做一些类似 length(y) 的事情。反而。 (并且可能应该;引用内部变量 piece 不能保证在将来的版本中工作,我认为。照我说的做,而不是照我做的,只使用 length() 。)

关于r - 使用 tapply 将多个函数应用于列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7406461/

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