r - 如何将调查响应的数据框转换为频率表?

标签 r dataframe dplyr

我有一个调查结果的 R 数据框。每列都是对调查中一个问题的回答。它可以取值 1 到 10 和 NA。我想把它变成频率表。

这是我拥有的数据的示例。我假装值是从 1 到 3,而不是 1 到 10。

data.frame(
  "Person" = c(1,2,3),
  "Question1" = c(NA, "1", "1"),
  "Question2" = c("1", "2", "3")
)

我想要的:

data.frame(
  "Question" = c("Question1", "Question2"),
  "Frequency of 1" = c(2, 1),
  "Frequency of 2" = c(0 , 1),
  "Frequency of 3" = c(0, 1)
)

我已经尝试使用 likert 包中的 likert(),但我得到的结果是不正确的。这个问题有简单的解决方案吗?

最佳答案

这是一个使用 dplyr 和 purrr 包的解决方案

library(dplyr)
library(purrr)

data.frame(
  "Person" = c(1,2,3),
  "Question1" = c(NA, "1", "1"),
  "Question2" = c("1", "2", "3")
)

df %>% 
  select(-Person) %>% 
  mutate_all(~ factor(.x, levels =  as.character(1:10) ) %>% addNA() ) %>% 
  map(table) %>% 
  transpose() %>% 
  map(as.integer) %>% 
  set_names( ~ paste0("Frequency of ",ifelse(is.na(.), "NA", .))) %>% 
  as_tibble() %>% 
  mutate(Question = setdiff(names(df),"Person")) %>% 
  select(Question,everything(), "Frequency of NA" = `Frequency of ` ) 

关于r - 如何将调查响应的数据框转换为频率表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54613431/

相关文章:

R dplyr 加入日期范围

r - dplyr按行和和其他函数,例如max

performance - 子集数据帧的最有效方法

R:产生 NaN

r - 如何从R访问Wikipedia?

r - 如何将变量列表附加到 R 数据框特定行中的列表?

r - geom_smooth() 中 "method"参数值有什么区别

python - 按 Pandas 数据框列的相同部分字符串分组

python - 在数据框中用 nan 替换特定值

python - pandas.DataFrame. 替换为通配符