计算多列中是/否的计数

问题描述 投票:0回答:2

Col1 有 ID,Col2、Col3、Col4 有不同的问题,有“是”和“否”答案。 我试图在每列中输出是和否的数量。这是针对 Spotfire(r) 表的。我尝试使用pivot_wider函数,但它不适用于超过一列。

感谢您对此进行调查。

身份证 Q1 Q2
101 是的 没有
104 是的 是的
104 没有 没有
Q1 - 是 Q1 - 否 Q2-是 Q2 - 否
2 1 1 2
r dataframe count spotfire summarize
2个回答
0
投票

您的数据已经很广泛了。首先将形状重塑为长形,进行转换,然后再恢复为宽形会更容易。例如

library(dplyr)
library(tidyr)
dd |>
  pivot_longer(cols=Q1:Q2) |>
  count(name, value) |>
  mutate(outcol = paste(name,"-", value)) |>
  select(outcol, n) |> 
  pivot_wider(names_from=outcol, values_from=n, values_fill=0)
# # A tibble: 1 × 4
#   `Q1 - No` `Q1 - Yes` `Q2 - No` `Q2 - Yes`
#       <int>      <int>     <int>      <int>
# 1         1          2         2          1

0
投票

基础 R 选项

with(
    as.data.frame(
        table(paste0("Q", col(df[-1])), unlist(df[-1]))
    ),
    setNames(Freq, paste(Var1, Var2, sep = "-"))
)

给予

 Q1-No  Q2-No Q1-Yes Q2-Yes
     1      2      2      1

数据

> dput(df)
structure(list(ID = c(101L, 104L, 104L), Q1 = c("Yes", "Yes", 
"No"), Q2 = c("No", "Yes", "No")), class = "data.frame", row.names = c(NA,
-3L))
© www.soinside.com 2019 - 2024. All rights reserved.