gpt4 book ai didi

r - 解释R Tapply描述

转载 作者:行者123 更新时间:2023-12-03 11:51:01 26 4
gpt4 key购买 nike

我了解tapply()在R中的作用。但是,我无法从文档中解析此描述:

在“参差不齐”的数组上应用函数

描述:

将函数应用于参差不齐的数组的每个单元,即对每个单元
(非空)一组值,这些值由
某些因素的水平。

用法:

tapply(X,INDEX,FUN = NULL,...,简化= TRUE)

当我想到tapply时,我想到了sql中的group by。您可以将X中的值与INDEX中的并行因子水平分组在一起,然后将FUN应用于这些组。我已经阅读了Tapply 100次的描述,但仍然无法弄清它的内容如何映射到我对Tapply的理解。也许有人可以帮我解析它?

最佳答案

让我们看看R documentation在这个问题上说了什么:

The combination of a vector and a labelling factor is an example of what is sometimes called a ragged array, since the subclass sizes are possibly irregular. When the subclass sizes are all the same the indexing may be done implicitly and much more efficiently, as we see in the next section.



您通过 INDEX提供的因子列表一起指定了 X子集的集合,这些子集的长度可能不同(因此,“参差不齐”的描述符)。然后将 FUN应用于每个子集。

编辑:@Joris在评论中提出了一个很好的观点。将 tapply(X,Y,...)视为 sapply(split(X,Y),...)的包装可能会有所帮助,因为如果Y是分组因子的列表,它将根据其唯一级别构建一个新的单个分组因子,相应地将X拆分并将FUN应用于每个片段。

编辑:这是一个说明性的示例:
library(lattice)
library(plyr)
set.seed(123)

#Make this example unbalanced
dat <- barley[sample(1:120,50),]

#Suppose we want the avg yield by year/site:
table(dat$year,dat$site)

#That's what they mean by 'ragged' array; there are different
# numbers of obs at each comb of levels

#In plyr we could use ddply:
ddply(dat,.(year,site),.fun=function(x){mean(x$yield)})

#Which gives the same result (listed in a diff order) as:
melt(tapply (dat$yield, list (dat$year, dat$site), mean))

关于r - 解释R Tapply描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6297201/

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