如何在R中创建具有空类别的频率表?
我有一个表格,上面有对调查中多个项目的回复。 (例如,1=不同意,7=同意)如何在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个级别
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)