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


R split 分組並重新集合


R語言 split 位於 base 包(package)。

說明

split 將向量 x 中的數據劃分為 f 定義的組。替換形式替換與這種劃分相對應的值。 unsplit 反轉 split 的效果。

用法

split(x, f, drop = FALSE, ...)
## Default S3 method:
split(x, f, drop = FALSE, sep = ".", lex.order = FALSE, ...)

split(x, f, drop = FALSE, ...) <- value
unsplit(value, f, drop = FALSE)

參數

x

包含要分組的值的向量或 DataFrame 。

f

‘factor’ 在 as.factor(f) 定義分組的意義上,或此類因子的列表,在這種情況下,它們的交互用於分組。如果 x 是一個 DataFrame ,f 也可以是 ~ g 形式的公式,由變量 g 分割,或者更一般地是 ~ g1 + ... + gk 形式,由變量的相互作用進行分割 g1 , ..., gk ,其中使用通常的非標準評估規則在數據幀 x 中評估這些變量。

drop

邏輯指示是否應刪除未發生的級別(如果 ffactor 或列表)。

value

x 的分割兼容的向量或數據幀列表。如果長度不匹配,則適用回收。

sep

字符串,在 flist 的情況下傳遞給 interaction

lex.order

邏輯,當 f 是列表時傳遞給 interaction

...

進一步傳遞給方法的潛在參數。

細節

splitsplit<- 是具有默認方法和 data.frame 方法的通用函數。 DataFrame 方法還可用於將矩陣拆分為矩陣列表,以及類似的替換形式,前提是顯式調用它們。

unsplit 適用於向量或數據幀列表(假設具有兼容的結構,就像由 split 創建的一樣)。它將元素或行放回到 f 給出的位置。在數據幀情況下,行名稱是通過從 value 的元素中取消分割行名稱向量來獲得的。

f 根據需要進行回收,如果 x 的長度不是 f 長度的倍數,則會打印警告。

f 中的任何缺失值都會與 x 的相應值一起刪除。

默認方法調用interactionf是一個list。如果因子水平包含‘⁠.⁠’這些因子可能不會按預期進行分割,除非sep設置為因子中不存在的字符串levels.

split 返回的值是包含組值的向量列表。列表的組件由 f 的級別命名(轉換為因子後,或者如果已經是因子和 drop = TRUE ,則刪除未使用的級別)。

替換表格返回其右側。 unsplit 返回 split(x, f) 等於 value 的向量或數據幀

例子

require(stats); require(graphics)
n <- 10; nn <- 100
g <- factor(round(n * runif(n * nn)))
x <- rnorm(n * nn) + sqrt(as.numeric(g))
xg <- split(x, g)
boxplot(xg, col = "lavender", notch = TRUE, varwidth = TRUE)
sapply(xg, length)
sapply(xg, mean)

### Calculate 'z-scores' by group (standardize to mean zero, variance one)
z <- unsplit(lapply(split(x, g), scale), g)

# or

zz <- x
split(zz, g) <- lapply(split(x, g), scale)

# and check that the within-group std dev is indeed one
tapply(z, g, sd)
tapply(zz, g, sd)


### data frame variation

## Notice that assignment form is not used since a variable is being added

g <- airquality$Month
l <- split(airquality, g)

## Alternative using a formula
identical(l, split(airquality, ~ Month))

l <- lapply(l, transform, Oz.Z = scale(Ozone))
aq2 <- unsplit(l, g)
head(aq2)
with(aq2, tapply(Oz.Z,  Month, sd, na.rm = TRUE))


### Split a matrix into a list by columns
ma <- cbind(x = 1:10, y = (-4:5)^2)
split(ma, col(ma))

split(1:10, 1:2)

參考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

也可以看看

cut 對數值進行分類。

strsplit 分割字符串。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Divide into Groups and Reassemble。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。