我有一张看起来像这样的表
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中可能有一种优雅的方式来实现这一点。所以,我想知道如何解决这个问题?
任何帮助将不胜感激。
RAM中。
答案 0 :(得分: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( , )
根据需要创建2D列联表:
table(df$Length.cut, df$OHR.cut)
当然,额外列的分配只是有益的(看看cut
正在做什么),你可以做到
table(cut(df$Length, breaks = 10*(0:10)), cut(df$OHR, breaks = (0:10)/10))
没有中间步骤。