在r expss表中从行到列重新排列cpct

zujrkrfu  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(90)

我使用R expss包来计算以下内容。任何帮助都是非常感谢的。

df <- data.frame(repid=c(1:5), 
             q1=c(1,3,2,1,3), 
             q2=c(2,3,1,1,2), 
             q3=c(2,2,3,1,2))
df %>% tab_cells(q1, q2, q3) %>% 
   tab_stat_cpct(total_row_position = "none") %>%  
   tab_pivot()

# output table from the code above
#       #Total 
# q1 
#   1   40
#   2   20
#   3   40
# q2 
#   1   40
#   2   40
#   3   20
# q3 
#   1   20
#   2   60
#   3   20
#
#
# needed table
#       1   2    3
# q1   40  20   40 
# q2   40  40   20
# q3   20  60   20

我尝试了expss包中的tab_transpose功能。

t9aqgxwy

t9aqgxwy1#

我设法找到了解决办法。

library(expss)
df <- data.frame(repid=c(1:5), 
             q1=c(1,3,2,1,3), 
             q2=c(2,3,1,1,2), 
             q3=c(2,2,3,1,2))
Out=df %>% tab_cells(q1, q2, q3) %>% 
   tab_stat_cpct(total_row_position = "none") %>%  
   tab_pivot()

Out2=split_table_to_df(Out, remove_repeated = FALSE)
colnames(Out2) <- c('Metric', 'Level', 'Value')
Out2 <- Out2[-1,]  # Removes first row 

library(tidyverse)
Out3 <- Out2 %>% 
        pivot_wider(id_cols = Metric, names_from = Level, values_from = Value)

相关问题