使表格显示百分比而不是R中的频率

Tav*_*avi 4 r function

我的数据框中有一些单词df属于A类或B类.在每个类别中,单词可以是1,2或3类型.我使用该table()函数来显示单词在类别和类型中的分布情况.输出如下:

         category
type     A    B
1        30  79
2        12  94
3        29  6 
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,表格会计算频率,但我希望它能够计算百分比.我试过prop.table但是我得到以下错误

FUN中的错误(X [[1L]],...):仅在具有所有数字变量的数据帧上定义

我无法在其他任何地方找到解决方案; 请帮忙.谢谢.

这是我的示例数据:

head(items)

       item   type category
[1]    PA100   1    A
[2]    PB101   2    A
[3]    UR360   2    A
[4]    PX977   3    B
[5]    GA008   3    B
[6]    GR446   3    A
Run Code Online (Sandbox Code Playgroud)

Ric*_*ven 5

如评论中所述,您可以prop.tabletable对象上使用a .在您的情况下,使用a margin = 1,这意味着我们要计算表中各行的百分比.

> tab <- with(items, table(type, category))
> prop.table(tab, margin = 1)
#     category
# type         A         B
#    1 1.0000000 0.0000000
#    2 1.0000000 0.0000000
#    3 0.3333333 0.6666667
Run Code Online (Sandbox Code Playgroud)

对于实际百分比,您可以将表乘以100

> prop.table(tab, 1)*100
#     category
# type         A         B
#    1 100.00000   0.00000
#    2 100.00000   0.00000
#    3  33.33333  66.66667
Run Code Online (Sandbox Code Playgroud)

哪里

items <- 
structure(list(item = structure(c(3L, 4L, 6L, 5L, 1L, 2L), .Label = c("GA008", 
"GR446", "PA100", "PB101", "PX977", "UR360"), class = "factor"), 
    type = c(1L, 2L, 2L, 3L, 3L, 3L), category = structure(c(1L, 
    1L, 1L, 2L, 2L, 1L), .Label = c("A", "B"), class = "factor")), .Names = c("item", 
"type", "category"), class = "data.frame", row.names = c(NA, 
-6L))
Run Code Online (Sandbox Code Playgroud)