當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。