当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R by 将函数应用于按因子拆分的 DataFrame


R语言 by 位于 base 包(package)。

说明

函数 by 是应用于数据帧的 tapply 的面向对象包装器。

用法

by(data, INDICES, FUN, ..., simplify = TRUE)

参数

data

一个R对象,通常是 DataFrame ,可能是矩阵。

INDICES

一个因子或一系列因子,每个因子的长度为 nrow(data) 。对于数据帧方法,INDICES 也可以是数据帧 split 方法的 f 参数中的公式。

FUN

应用于(通常是data-frame)data 子集的函数。

...

FUN 的进一步参数。

simplify

逻辑:参见tapply

细节

数据帧按行分割为按一个或多个因子的值划分子集的数据帧,并且函数FUN 依次应用于每个子集。

对于默认方法,具有维度的对象(例如矩阵)被强制为 DataFrame 并应用 DataFrame 方法。其他对象也被强制到 DataFrame ,但 FUN 单独应用于 DataFrame 的每一列(的子集)。

"by" 的对象,给出每个子集的结果。如果 simplify 为 false,则始终为列表,否则为列表或数组(请参阅 tapply )。

例子

require(stats)
by(warpbreaks[, 1:2], warpbreaks[,"tension"], summary)
by(warpbreaks[, 1],   warpbreaks[, -1],       summary)
by(warpbreaks, warpbreaks[,"tension"],
   function(x) lm(breaks ~ wool, data = x))

## now suppose we want to extract the coefficients by group
tmp1 <- with(warpbreaks,
            by(warpbreaks, tension,
               function(x) lm(breaks ~ wool, data = x)))
sapply(tmp1, coef)

## another way
tmp2 <- by(warpbreaks, ~ tension,
           with, coef(lm(breaks ~ wool)))
array2DF(tmp2, simplify = TRUE)

也可以看看

tapplysimplify2arrayarray2DF 将结果转换为数据帧。 ave 还应用函数block-wise。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Apply a Function to a Data Frame Split by Factors。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。