gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:30:39 24 4
gpt4 key购买 nike

我有一个调查结果的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com