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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。