计算 R 中所有列的响应

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

在 R 中,我有一个包含超过 400 列(调查问题)和 5000 行(参与者)的数据集

例如:see image

我想计算每个问题记录了多少个回复,即对于问题 1 到 3 有 4 个回复,然后对于 Q3a 和 Q4 有 2 个回复。

有没有一种方法可以对此进行计数并生成一个包含每列计数的表格,而无需专门命名所有 400 列?

大多数回复都是数字形式,但也有一些是文本形式。

谢谢你

学习 R,到目前为止我见过的解决方案都无法解决此问题

r count multiple-columns
1个回答
0
投票

如果满足您的条件,您可以使用

colSums
创建逻辑向量(即
TRUE
/
FALSE
) - 在 R 中,逻辑在数学上被视为 1 (TRUE) 和 0 (FALSE)。因此,使用
colSums
将总结您所需要的内容。

从您的图像来看,您似乎有两种类型的列。主要答案有数字答案,有些问题有自由文本。因此,我们需要创建另一个逻辑向量

x
,将它们分开:

x <- vapply(df, is.numeric, logical(1L))

x[x] <- colSums(df[x] != 0)
x[!x] <- colSums(!is.na(df[!x])) 

# Q1  Q2  Q3 Q3a  Q4 
#  4   4   4   2   2 

数据:

df <- data.frame(Q1 = c(1,2,1,1),
                 Q2 = c(1,1,1,2),
                 Q3 = c(7,5,1,4),
                 Q3a = c("other", "shop", NA, NA),
                 Q4 = c(1,0,2,0))
© www.soinside.com 2019 - 2024. All rights reserved.