-1

我在数据框中有两列配对值,我想使用cut2中的函数将数据合并到一列中,以便每个 bin 中至少有 25 个数据点。但是,我需要另一列的相应值。有没有使用 R 的便捷方法?我必须将 B 列装箱。Hmisc

A           B
-10.834510  1.680173
11.012966  1.866603
-16.491415  1.868667
-14.485036  1.900002
2.629104  1.960929
-3.597291  2.005348
.........
4

1 回答 1

0

目前尚不清楚您想要“另一列的相应值”是什么意思。使用 g (# of groups) 参数很容易完成第一部分:

dfrm$Agrp <- cut2(dfrm$A, g=trunc(length(dfrm$A)/25) )

您可以使用Hmisc 汇总函数或其中一个汇总tapplyAgrp中 B 的平均值或中位数。ave在今天的问题之一中有几个工作示例:如何按组获取摘要统计信息以及使用这些函数或aggregatepkg:plyr 函数的许多其他示例。

鉴于 B 值的数量在组之间不一定是恒定的,我认为通过 A-grouped-value 传递单个值的唯一方法是 with split。我添加了一个额外的行来说明非偶数拆分可能需要返回一个列表而不是一个更“矩形”的对象:

dat <- read.table(text="A           B
 -10.834510  1.680173
 11.012966  1.866603
 -16.491415  1.868667
 -14.485036  1.900002
 2.629104  1.960929
 -3.597291  2.005348\n 3.5943 3.796", header=TRUE)
 dat$Agrp <- cut2(dat$A, g=trunc(length(dat$A)/3) )
 split(dat$B, dat$Agrp)
 #-----    
$`[-16.49, 2.63)`
[1] 1.680173 1.868667 1.900002 2.005348

$`[  2.63,11.01]`
[1] 1.866603 1.960929 3.796000

如果您想要进行拆分的值向量,则可以通过使用 regex on 来完成 levels(dat$Agrp)

于 2012-03-24T22:53:39.060 回答