R中的prop.table()在表列表中

Posted

技术标签:

【中文标题】R中的prop.table()在表列表中【英文标题】:prop.table() in R on a list of tables 【发布时间】:2020-09-06 19:12:56 【问题描述】:

我有几个格式相同的表格,我想在所有这些表格上运行prop.table。如何在表格列表上运行prop.table?通过说“表列表”,我的意思是表名的向量。

my_table

my_table2

list

【问题讨论】:

显示的数据不是表格列表。这是一个单表。如果问题是关于表格列表的,请显示。 是的,它不是表格列表,而是这些表格的示例。它们都是相同的结构和格式。 附加结构不是表格列表。它是一个列表,其中包含一个可能包含变量名称的字符向量,这样每个此类变量都存在于您的工作区中并包含一个表。这是你的意思吗?如果是这样,请提供一个完整的最小可重复示例(不仅仅是一个片段),希望回答问题的人可以使用它。请参阅r 标签页顶部的说明。 嗨,更新了问题。希望它会更清楚。 好的,但请注意,它仍然不是表名列表。它是一个包含表名的单个字符向量的列表。表名列表将是 list 【参考方案1】:

使用两个示例表并同时使用 prop.tableproportions...

library(purrr)
my_table <- structure(c(0L, 0L, 0L, 5L, 35L, 274L, 3L, 0L, 0L, 15L, 1L, 0L, 0L, 7L, 1L, 0L, 1L, 13L, 44L, 0L, 0L, 0L, 28L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 42L, 23L, 0L, 0L, 0L, 7L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 2L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 2L, 5L, 4L, 8L, 0L, 0L, 0L, 4L, 0L, 0L, 0L, 0L, 0L, 0L, 17L, 3L, 15L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 7L, 0L, 5L, 168L, 140L, 0L, 0L, 0L, 18L, 0L, 0L, 0L, 2L, 3L, 0L, 11L, 60L, 580L, 3L, 0L, 0L, 110L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 2L, 4L, 20L, 1L, 0L, 5L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 3L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 6L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 7L, 2L, 20L, 246L, 1148L, 3L, 0L, 1L, 837L, 2L, 0L, 0L, 0L, 1L, 0L, 2L, 31L, 65L, 1L, 0L, 0L, 52L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 8L, 11L, 0L, 0L, 0L, 28L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 3L, 0L, 0L, 0L, 6L, 0L, 0L, 0L, 0L, 2L, 0L, 1L, 2L, 6L, 0L, 0L, 0L, 10L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L), .Dim = c(13L, 19L), .Dimnames = structure(list( c("1029", "1031", "2056", "2060", "2061", "256", "258", "259", "265", "4114", "4115", "528", "9"), c("0", "1029", "1031", "133", "17", "2056", "2060", "2061", "256", "258", "259", "265", "4114", "4115", "5", "528", "529", "67", "9")), .Names = c("", "")), class = "table")
my_table2 <- structure(c(68L, 108L, 27L, 9L, 4L, 10L, 0L, 39L, 641L, 5213L, 161L, 3L, 21L, 182L, 40L, 23L, 19L, 13L, 27L, 25L, 12L, 32L, 2207L, 476L, 15L, 2L, 63L, 19L, 8L, 44L, 708L, 139L, 54L, 16L, 65L, 404L, 116L, 88L, 122L, 35L, 59L, 59L, 1L, 67L, 41L, 466L, 0L, 0L, 11L, 3L, 0L, 11L, 429L, 94L, 2L, 0L, 49L, 48L, 9L, 3L, 5L, 4L, 9L, 19L, 0L, 4L, 28L, 12L, 1026L, 193L, 6L, 2L, 0L, 1L, 19L, 6L, 5L, 2L, 4L, 24L, 13L, 3L, 10L, 2L, 4L, 4L, 6L, 12L, 24L, 9L, 22L, 604L, 9L, 5L, 1L, 0L, 11L, 5L, 4L, 2L, 2L, 12L, 7L, 1L, 4L, 0L, 3L, 8L, 137L, 15L, 121L, 35L, 5L, 8L, 187L, 20L, 2L, 1L, 18L, 4L, 34L, 16L, 6L, 48L, 68L, 25L, 21L, 1L, 72L, 70L, 2L, 9L, 33L, 20L, 10L, 2L, 26L, 113L, 1L, 0L, 30L, 15L, 6L, 6L, 14L, 24L, 21L, 7L, 26L, 8L, 6L, 100L, 1L, 9L, 5L, 9L, 1L, 0L, 0L, 0L, 56L, 17L, 2L, 1L, 1L, 0L, 0L, 15L, 12L, 1L, 3L, 2L, 0L, 1L, 0L, 1L, 4L, 7L, 0L, 0L, 0L, 0L, 3L, 96L, 4L, 25L, 4L, 0L, 0L, 4L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 87L, 220L, 11L, 2L, 8L, 12L, 0L, 11L, 1703L, 538L, 31L, 5L, 32L, 126L, 21L, 25L, 10L, 8L, 16L, 22L, 4L, 46L, 87L, 101L, 5L, 4L, 8L, 8L, 1L, 26L, 760L, 3071L, 59L, 5L, 22L, 161L, 26L, 11L, 18L, 10L, 18L, 18L, 2L, 20L, 8L, 1L, 6L, 3L, 11L, 6L, 0L, 1L, 4L, 3L, 617L, 27L, 2L, 10L, 2L, 6L, 15L, 8L, 11L, 25L, 2L, 8L, 4L, 1L, 3L, 1L, 7L, 4L, 2L, 1L, 4L, 1L, 59L, 97L, 1L, 2L, 3L, 0L, 6L, 3L, 7L, 9L, 1L, 3L, 10L, 95L, 0L, 0L, 2L, 2L, 0L, 1L, 53L, 25L, 2L, 1L, 43L, 11L, 4L, 1L, 3L, 3L, 4L, 16L, 0L, 2L, 169L, 306L, 5L, 3L, 19L, 27L, 7L, 31L, 742L, 170L, 53L, 7L, 36L, 1768L, 291L, 31L, 53L, 22L, 32L, 43L, 1L, 17L, 102L, 288L, 2L, 2L, 24L, 16L, 5L, 8L, 152L, 36L, 16L, 2L, 32L, 654L, 394L, 24L, 83L, 13L, 16L, 30L, 1L, 15L, 57L, 34L, 5L, 0L, 12L, 4L, 0L, 0L, 15L, 6L, 8L, 0L, 8L, 23L, 34L, 211L, 15L, 6L, 19L, 11L, 1L, 35L, 343L, 187L, 5L, 2L, 19L, 14L, 5L, 4L, 80L, 34L, 45L, 9L, 77L, 213L, 276L, 28L, 241L, 37L, 18L, 84L, 2L, 20L, 31L, 50L, 0L, 0L, 1L, 8L, 2L, 0L, 15L, 4L, 1L, 0L, 22L, 29L, 24L, 1L, 13L, 18L, 1L, 10L, 0L, 3L, 35L, 12L, 0L, 1L, 37L, 5L, 0L, 1L, 10L, 3L, 10L, 3L, 1L, 29L, 17L, 20L, 4L, 0L, 213L, 11L, 2L, 7L, 112L, 78L, 4L, 6L, 129L, 49L, 3L, 0L, 62L, 24L, 31L, 5L, 45L, 75L, 62L, 20L, 126L, 31L, 23L, 170L, 2L, 14L, 20L, 4L, 32L, 37L, 15L, 9L, 0L, 0L, 3L, 9L, 11L, 1L, 2L, 9L, 10L, 4L, 8L, 2L, 11L, 22L, 563L, 13L, 23L, 9L, 222L, 9L, 2L, 2L, 0L, 2L, 9L, 9L, 5L, 1L, 6L, 9L, 6L, 39L, 4L, 2L, 7L, 2L, 3L, 1053L), .Dim = 22:23, .Dimnames = structure(list( c("1029", "1031", "12", "13", "133", "17", "2056", "2060", "2061", "256", "258", "259", "265", "4114", "4115", "5", "528", "529", "65", "67", "7", "9"), c("0", "1029", "1031", "12", "13", "133", "17", "2056", "2060", "2061", "256", "258", "259", "265", "4114", "4115", "5", "528", "529", "65", "67", "7", "9")), .Names = c("", "")), class = "table") 
my_list_of_tables <- vector(mode = "list", length = 2)
my_list_of_tables[[1]] <- my_table
my_list_of_tables[[2]] <- my_table2
# my_list_of_tables

my_list_of_proptables <- purrr::map(my_list_of_tables, proportions)
my_list_of_proptables2 <- purrr::map(my_list_of_tables, prop.table)
all.equal(my_list_of_proptables, my_list_of_proptables2)
#> [1] TRUE

【讨论】:

我收到一个错误:Error in as_mapper(.f, ...) : object 'proportions' not found 然后试试prop.table?什么版本的r 嗨,我所说的“表列表”是指带有表名的字符向量,我在我的环境列表中拥有它 啊,好吧。误解了你的意思【参考方案2】:

如果LIST 是您的表列表:

prop.list <-lapply(LIST,function(x)
              prop.table(x)
            )

【讨论】:

手册说 prop.table 是一个较早的名称,保留用于向后兼容。所以最好现在就叫它proportions 谢谢,我为所有表制作了一个真实的列表(不是我以前拥有的表名向量)并使用了您的方法,它奏效了。

以上是关于R中的prop.table()在表列表中的主要内容,如果未能解决你的问题,请参考以下文章

(RIM)R中的加权样本

检查字符串的第一部分是否在表中的值列表中

如何防止在表中的多个下拉列表中选择相同的值并 POST 到服务器

R语言使用addmargins函数和prop.table函数为二维列联表计算列(column)比例值以及对应的边缘比率值使用addmargins函数和prop.table函数计算二维列联表行边缘比率

R语言使用addmargins函数和prop.table函数为二维列联表计算列(column)比例值以及对应的边缘比率值使用addmargins函数和prop.table函数计算二维列联表行边缘比率

R语言使用prop.table函数为二维列联表计算所有类别组合的比例使用addmargins函数为二维列联表计算所有的边缘频数值使用addmargins函数和prop.table函数计算边缘比率值