【问题标题】:r print frequencies above a valuer 打印高于某个值的频率
【发布时间】:2014-09-16 00:39:35
【问题描述】:

如何打印表格中的重要频率以及行/列名称?

with(mtcars,table(cyl,carb))

   carb
cyl 1 2 3 4 6 8
  4 5 6 0 0 0 0
  6 2 0 0 4 1 0
  8 0 4 3 6 0 1

我想查看频率为 5 及以上的行和列

   carb
cyl 1 2 4
  4 5 6 0
  8 0 4 6

或者,关于如何在 100 行 200 列的频率表中查看重要数据的任何建议。

下面的可以打印吗?

cyl  carb  count
4     1      5
4     2      5
8     4      6

【问题讨论】:

  • 可能是subset(as.data.frame(with(mtcars,table(cyl,carb))), Freq>=5)

标签: r printf conditional frequency


【解决方案1】:

对于您的第一个问题,您可以使用whicharr.ind 参数来获取您希望选择的行和列:

x <- with(mtcars,table(cyl,carb))
inds <- which(x>=5,arr.ind=TRUE)

x[unique(inds[,"row"]),unique(inds[,"col"])]
   carb
cyl 1 2 4
  4 5 6 0
  8 0 4 6

第二个问题比较简单,强制转换成data.framesubset

subset(as.data.frame(x),Freq>=5)
   cyl carb Freq
1    4    1    5
4    4    2    6
12   8    4    6

【讨论】:

    【解决方案2】:

    你可以试试:

    tbl <- with(mtcars, table(cyl, carb))
    dat1 <- subset(as.data.frame(with(mtcars,table(cyl,carb))), Freq>=5) 
    tbl2 <- xtabs(Freq~., droplevels(dat1))
    indx <- match(outer(rownames(tbl2), colnames(tbl2), FUN=paste0),outer(rownames(tbl), colnames(tbl), FUN=paste0))
    
     tbl2[] <- tbl[indx]
     tbl2
     #  carb
    #cyl  1 2 4
    #   4 5 6 0
    #   8 0 4 6
    

    或者

      indx <- tbl>=5
      tbl[!!rowSums(indx), !!colSums(indx)]
        carb
     #cyl 1 2 4
     #  4 5 6 0
     #  8 0 4 6
    

    【讨论】:

      猜你喜欢
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-29
      • 1970-01-01
      • 2020-07-04
      • 2016-08-31
      • 1970-01-01
      相关资源
      最近更新 更多