我如何使用粘贴功能将百分比插入R中的表中

问题描述 投票:0回答:2

我正在尝试在R中的表格的每个单元格中插入一个百分比

这是我正在使用的数据框

1 a          1535      4      0     1539
2 b           768      6      0      774
3 c           112      1      0      113
4 d           279      4      0      283
5 e           231      5      0      236

这是我用来生成它的代码:

df <-structure(
  list(
    category = c(
      "a",
      "b",
      "c",
      "d",
      "e"
    ),
    group1 = c(1535,
                   768, 112, 279, 231),
    group2 = c(4, 6, 1, 4, 5),
    group3 = c(0,
                    0, 0, 0, 0),
    groupall = c(1539, 774, 113, 283, 236)
  ),
  class = c("grouped_df",
            "tbl_df", "tbl", "data.frame"),
  row.names = c(NA, 5L),
  groups = structure(
    list(
      category = c(
        "a",
        "b",
        "c",
        "d",
        "e"
      ),
      .rows = list(1L,
                   2L, 3L, 4L, 5L)
    ),
    row.names = c(NA,-5L),
    class = c("tbl_df",
              "tbl", "data.frame"),
    .drop = FALSE
  )
)

我已经尝试过此代码:

findPerc<- function(x){
  percent <- as.numeric(round((x/10000) * 100, digits = 2))
  paste(percent, "%", sep = '')
}

然后使用]将其应用于数据框>

df <- apply(df,c(1,2),findPerc)

但是这会返回错误:x / 10000错误:二进制运算符的非数字参数

我想要的输出看起来像:

 1 a          1535(15.35%)     4(0.04%)     0(0.00%)    1539(15.39%)
 2 b           768 (7.65%)     6(0.06%)      0 (0.00%)     774(7.74%)

有人可以帮我解决我哪里出错了吗?

我正在尝试在R中的表的每个单元格中插入一个百分比,这是与1 a 1535 4 0 1539 2 b 768 6 0 774 3 c ...一起工作的数据帧。]

r percentage
2个回答
0
投票
发生错误是因为您试图将category列强制为数字值。第二个问题是apply将所有选定的页边距强制转换为相同类型,在这种情况下为字符。观察:

apply(df, 2, mode) category group1 group2 group3 groupall "character" "character" "character" "character" "character"


0
投票
您需要避免第一列-属于字符类。
© www.soinside.com 2019 - 2024. All rights reserved.