0

我有一张看起来像这样的桌子

ID Length OHR
A  23     .34
B  45     .23
C  89     .24

我想对此进行处理以生成另一个表,其中单元格包含在给定长度范围内的值的计数以及 OHR(例如,在长度小于 10 的所有值中,2 的 OHR 值介于 0和0.1等等......)

Length/OHR 0-0.1 0.1-0.2 0.2-0.3
0-10        2       3       4
11-20       3       3       4
20-30       1       7       8

如果是一列,我可以使用 cut 来获取计数,但在这里我需要根据两列查找计数。我可以在其他编程语言中使用条件语句的组合来实现这一点,但这会使代码看起来很混乱,甚至更慢。鉴于 R 旨在操纵此类数据,我认为在 R 中可能有一种优雅的方式来实现这一点。所以,我想知道如何去做?

任何帮助将不胜感激。

内存。

4

1 回答 1

0

创建一个模拟数据的虚拟数据框:

set.seed(123)
df <- data.frame(Length = floor(runif(10,0,100)), OHR = runif(10))
head(df)
#  Length       OHR
#1     28 0.9568333
#2     78 0.4533342
#3     40 0.6775706
#4     88 0.5726334
#5     94 0.1029247
#6      4 0.8998250

用于cut制作分组类(breaks根据需要调整可选参数)

df$Length.cut <- cut(df$Length, breaks = 10*(0:10))
df$OHR.cut <- cut(df$OHR, breaks = (0:10)/10)

然后根据table( , )需要使用创建二维列联表:

table(df$Length.cut, df$OHR.cut)

当然额外列的分配只是指导性的(看看cut在做什么),你可以这样做

table(cut(df$Length, breaks = 10*(0:10)), cut(df$OHR, breaks = (0:10)/10))

没有中间步骤。

于 2013-11-07T01:55:29.973 回答