首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于r中的范围类别创建汇总表

基于r中的范围类别创建汇总表
EN

Stack Overflow用户
提问于 2013-02-07 18:14:20
回答 1查看 2.9K关注 0票数 2

我的数据格式如下:

代码语言:javascript
运行
复制
input<-data.frame(
    region=c("A","T","R","R","T"),
    geomorph=c("F","F","S","S","P"),
    depth=c(2.6,3.5,5.8,6.7,8.9))

> input
  region geomorph depth
1      A        F   2.6
2      T        F   3.5
3      R        S   5.8
4      R        S   6.7
5      T        P   8.9

我想创建一个汇总表,这样对于给定的深度类别(即0-3,3-6,6-10),区域(即A,R,T)和地貌(即F,S,P)的条目数量将被计数并显示如下:

代码语言:javascript
运行
复制
output<-data.frame(
    depth.category=c("0-3","3-6","6-10"),
    total=c(1,2,2),
    A=c(1,0,0),
    R=c(0,1,1),
    T=c(0,1,1),
    F=c(1,1,0),
    S=c(0,1,1),
    P=c(0,0,1))

> output
  depth.category total A R T F S P
1            0-3     1 1 0 0 1 0 0
2            3-6     2 0 1 1 1 1 0
3           6-10     2 0 1 1 0 1 1

有什么建议要怎么做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-07 18:20:32

首先,只需使用cut创建间隔,然后使用tablecbind结果:

代码语言:javascript
运行
复制
intervals <- cut(input$depth, breaks=c(0, 3, 6, 10))

cbind(table(intervals),
      table(intervals, input$region),
      table(intervals, input$geomorph))
#          A R T F P S
# (0,3]  1 1 0 0 1 0 0
# (3,6]  2 0 1 1 1 0 1
# (6,10] 2 0 1 1 0 1 1

上面的输出是一个matrix。如果需要data.frame,请使用以下命令

代码语言:javascript
运行
复制
temp <- cbind(table(intervals),
      table(intervals, input$region),
      table(intervals, input$geomorph))

temp <- data.frame(depth.category = rownames(temp),
                   as.data.frame(temp, row.names = 1:nrow(temp)))
names(temp)[2] <- "Total"
temp
#   depth.category Total A R T F P S
# 1          (0,3]     1 1 0 0 1 0 0
# 2          (3,6]     2 0 1 1 1 0 1
# 3         (6,10]     2 0 1 1 0 1 1
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14748562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档