【问题标题】:Modifying function to for EXPSS summary修改 EXPSS 汇总功能
【发布时间】:2020-07-28 19:10:25
【问题描述】:

您好,我正在尝试为 EXPSS 表创建一个函数,示例数据如下

   dput( df<-data.frame(
  aa = c("q","r","y","v","g","y","d","s","n","k","y","d","s","t","n","u","l","h","x","c","q","r","y","v","g","y","d","s","n","k","y","d","s","t","n","u","l","h","x","c"),
col1=c(1,2,3,2,1,2,3,4,4,4,5,3,4,2,1,2,5,3,2,1,2,4,2,1,3,2,1,2,3,1,2,3,4,4,4,1,2,5,3,5),
col2=c(2,1,1,7,4,1,2,7,5,7,2,6,2,2,6,3,4,3,2,5,7,5,6,4,4,6,5,6,4,1,7,7,2,7,7,2,3,7,2,4)
)
)

我创建的函数是

  sum1 <- cro_cpct(df1[[1]],df2[[2]])
 
}

现在我想在此函数中添加一个关于总计的条件,如果总计落在 (3,4,5) 中,那么整个列将替换为“--”。

【问题讨论】:

    标签: r function dplyr


    【解决方案1】:

    类似这样的:

    library(expss)
    
    dataa<-data.frame(
        aa = c("q","r","y","v","g","y","d","s","n","k","y","d","s","t","n","u","l","h","x","c","q","r","y","v","g","y","d","s","n","k","y","d","s","t","n","u","l","h","x","c"),
        col1=c(1,2,3,2,1,2,3,4,4,4,5,3,4,2,1,2,5,3,2,1,2,4,2,1,3,2,1,2,3,1,2,3,4,4,4,1,2,5,3,5),
        col2=c(2,1,1,7,4,1,2,7,5,7,2,6,2,2,6,3,4,3,2,5,7,5,6,4,4,6,5,6,4,1,7,7,2,7,7,2,3,7,2,4)
    )
    
    tab1 <- cro_cpct(dataa$aa,dataa$col1)
    total_row = grep("#", tab1[[1]])
    tab1[total_row, -1] = ifelse(tab1[total_row, -1]<8, "--",  tab1[total_row, -1])
    tab1
    # |          |              | dataa$col1 |      |      |      |    |
    # |          |              |          1 |    2 |    3 |    4 |  5 |
    # | -------- | ------------ | ---------- | ---- | ---- | ---- | -- |
    # | dataa$aa |            c |       12.5 |      |      |      | 25 |
    # |          |            d |       12.5 |      | 37.5 |      |    |
    # |          |            g |       12.5 |      | 12.5 |      |    |
    # |          |            h |            |      | 12.5 |      | 25 |
    # |          |            k |       12.5 |      |      | 12.5 |    |
    # |          |            l |            |  8.3 |      |      | 25 |
    # |          |            n |       12.5 |      | 12.5 | 25.0 |    |
    # |          |            q |       12.5 |  8.3 |      |      |    |
    # |          |            r |            |  8.3 |      | 12.5 |    |
    # |          |            s |            |  8.3 |      | 37.5 |    |
    # |          |            t |            |  8.3 |      | 12.5 |    |
    # |          |            u |       12.5 |  8.3 |      |      |    |
    # |          |            v |       12.5 |  8.3 |      |      |    |
    # |          |            x |            |  8.3 | 12.5 |      |    |
    # |          |            y |            | 33.3 | 12.5 |      | 25 |
    # |          | #Total cases |        8.0 | 12.0 |  8.0 |  8.0 | -- |
    
    

    【讨论】:

    • 嗨 Gregory,我刚刚更新了我的功能和要求,请检查并帮助找到解决方案
    • @rjunkie2 你需要像paste0(format(numeric_column, nsmall = 1), "%") 这样的数字列。
    猜你喜欢
    • 2018-06-27
    • 1970-01-01
    • 2020-11-24
    • 2012-06-23
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    相关资源
    最近更新 更多