如何在R中创建具有空类别的频率表?

如何在R中创建具有空类别的频率表?,r,count,frequency,survey,R,Count,Frequency,Survey,我有一个表格,上面有对调查中多个项目的回复。 (例如,1=不同意,7=同意) var1% 重命名(antwoord=rowname) 错误是: 函数(…,row.names=NULL,check.rows=FALSE,check.names=TRUE,)中出错: 参数表示不同的行数:7,6 我发现了一个问题:列表的长度不同。 apply不拾取零,因此var3的列表较短 我不知道如何解决这个问题。 有没有办法处理空类别? 是否有其他方法制作频率表。如何制作?一种方法是将变量转换为包含所有7个级别

我有一个表格,上面有对调查中多个项目的回复。 (例如,1=不同意,7=同意)

var1%
重命名(antwoord=rowname)
错误是: 函数(…,row.names=NULL,check.rows=FALSE,check.names=TRUE,)中出错: 参数表示不同的行数:7,6

我发现了一个问题:列表的长度不同。 apply不拾取零,因此var3的列表较短

我不知道如何解决这个问题。 有没有办法处理空类别?
是否有其他方法制作频率表。如何制作?

一种方法是将变量转换为包含所有7个级别的因子。然后表格的输出将包含所有7种可能性:

library(dplyr)
library(purrr)
as.data.frame(df) %>%
  mutate(across(starts_with("var"), ~factor(.,levels = 1:7))) %>%
  map_dfc(table) %>%
  rownames_to_column(var = "antwoord")
# A tibble: 7 x 4
  antwoord var1    var2    var3   
  <chr>    <table> <table> <table>
1 1        1       3       3      
2 2        2       2       2      
3 3        1       1       2      
4 4        2       1       1      
5 5        1       1       1      
6 6        2       2       2      
7 7        2       1       0     

一种方法是将变量转换为包含所有7个级别的因子。然后表格的输出将包含所有7种可能性:

library(dplyr)
library(purrr)
as.data.frame(df) %>%
  mutate(across(starts_with("var"), ~factor(.,levels = 1:7))) %>%
  map_dfc(table) %>%
  rownames_to_column(var = "antwoord")
# A tibble: 7 x 4
  antwoord var1    var2    var3   
  <chr>    <table> <table> <table>
1 1        1       3       3      
2 2        2       2       2      
3 3        1       1       2      
4 4        2       1       1      
5 5        1       1       1      
6 6        2       2       2      
7 7        2       1       0     

另一个选项是使用
pivot\u longer
旋转到长格式,使用
count
并使用
pivot\u wide

library(dplyr)
library(tidyr)
df %>%
    pivot_longer(cols = everything(), values_to = 'antwoord') %>%
    count(name, antwoord) %>% 
    pivot_wider(names_from = name, values_from = n)
数据
df另一个选项是使用
pivot\u longer
旋转到长格式,使用
count
并使用
pivot\u wide

library(dplyr)
library(tidyr)
df %>%
    pivot_longer(cols = everything(), values_to = 'antwoord') %>%
    count(name, antwoord) %>% 
    pivot_wider(names_from = name, values_from = n)
数据
df我没有看到你的更新。当我发布答案时,我没有看到你的更新。当我发布答案时,我没有看到你的更新
library(dplyr)
library(purrr)
as.data.frame(df) %>%
  mutate(across(starts_with("var"), ~factor(.,levels = 1:7))) %>%
  map_dfc(table) %>%
  rownames_to_column(var = "antwoord")
# A tibble: 7 x 4
  antwoord var1    var2    var3   
  <chr>    <table> <table> <table>
1 1        1       3       3      
2 2        2       2       2      
3 3        1       1       2      
4 4        2       1       1      
5 5        1       1       1      
6 6        2       2       2      
7 7        2       1       0     
library(tidyr)
as.data.frame(df) %>%
  pivot_longer(cols = everything(), values_to = "antwoord") %>%
  group_by(name,antwoord) %>%
  tally %>%
  pivot_wider(names_from = "name", values_from = n, values_fill = 0)
# A tibble: 7 x 4
  antwoord  var1  var2  var3
     <dbl> <int> <int> <int>
1        1     1     3     3
2        2     2     2     2
3        3     1     1     2
4        4     2     1     1
5        5     1     1     1
6        6     2     2     2
7        7     2     1     0
library(dplyr)
library(tidyr)
df %>%
    pivot_longer(cols = everything(), values_to = 'antwoord') %>%
    count(name, antwoord) %>% 
    pivot_wider(names_from = name, values_from = n)
df <- data.frame(var1, var2, var3)