Giter Site home page Giter Site logo

Q: custom table about expss HOT 2 CLOSED

przemo avatar przemo commented on June 6, 2024
Q: custom table

from expss.

Comments (2)

gdemin avatar gdemin commented on June 6, 2024

Yes, it is possible but a little tricky:

library(expss)
# create sample of data
set.seed(123)
N = 150
df = data.frame(
    st1 = sample(paste0("brand", 1:5), N, replace = TRUE),
    st2 = sample(paste0("brand", 1:5), N, replace = TRUE),
    st3 = sample(paste0("brand", 1:5), N, replace = TRUE),
    st4 = sample(paste0("brand", 1:5), N, replace = TRUE)
) %>% apply_labels(
    st1 = 'Statement 1', 
    st2 = 'Statement 2', 
    st3 = 'Statement 3', 
    st4 = 'Statement 4'
)


tab_hcpct = function(data, item) {
    eval.parent(substitute(
        # here we remove variable label from rows
        tab_cells(data, "|" = drop_var_labs(item)) %>% 
        # and make label for statistic from variable label
            tab_stat_cpct(label = var_lab(item)) 
    ))
}

df %>% 
    tab_hcpct(st1) %>% 
    tab_hcpct(st2) %>% 
    tab_hcpct(st3) %>% 
    tab_hcpct(st4) %>% 
    # stat_position = "inside_columns" means that we place statistic label (now it is var lab) in the columns
    tab_pivot(stat_position = "inside_columns") 

# |              |      #Total |             |             |             |
# |              | Statement 1 | Statement 2 | Statement 3 | Statement 4 |
# | ------------ | ----------- | ----------- | ----------- | ----------- |
# |       brand1 |        18.7 |        16.7 |        20.0 |        19.3 |
# |       brand2 |        20.0 |        25.3 |        24.7 |        20.7 |
# |       brand3 |        20.7 |        20.7 |        17.3 |        20.0 |
# |       brand4 |        21.3 |        19.3 |        19.3 |        15.3 |
# |       brand5 |        19.3 |        18.0 |        18.7 |        24.7 |
# | #Total cases |       150.0 |       150.0 |       150.0 |       150.0 |

from expss.

gdemin avatar gdemin commented on June 6, 2024

Something like this:

library(expss)
set.seed(123)

data <- data.frame(
    Age = sample(c("25-34", "35-54", "55+"), 25, replace = TRUE),
    BrandA = c(1, 0, 0, 1, 0, 1, NA, NA, NA, NA, NA, NA, NA, 1, 
               0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1),
    BrandB = c(NA, NA, NA, NA, NA, NA, 1, 1, 0, 1, 0, 1, 1, NA, 
               NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
    BrandC = c(1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 
               1, 1, 1, 0, 1, 0, 1, 0, 1)
)

custom_dichotomy = function(x, weight = NULL){
    c(
        "%" = w_mean(x, weight = weight)*100,
        "#Total" = unweighted_valid_n(x, weight = weight)
    )
    
}

data %>%
    tab_cells(BrandA %to% BrandC) %>%
    tab_cols(total(), Age) %>%
    tab_stat_fun(custom_dichotomy) %>%
    tab_pivot()

from expss.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.