r - 计算非空白列的数量并分配给个别受访者
问题描述
我正在尝试获取将在以后的步骤中成为分母的朋友总数。
示例数据:
set.seed(24) ## for sake of reproducibility
n <- 5
data <- data.frame(id=1:n,
Q1= c("same", "diff", NA, NA, NA),
Q2= c("diff", "diff", "same", "diff", NA),
Q3= c("same", "diff", NA ,NA, "diff"),
Q4= c("diff", "same", NA, NA, NA))
我首先需要创建一个列,其中包含每个参与者响应的列数的数字计数(“相同”或“差异”,不计算 NA/空白)。我试过以下
friendship <- total.friends <- rowSums(c(data$Q1, data$Q2, data$Q3, data$Q4)), != "")
friendship <- total.friends <-rowSums(!is.na(c(data$Q1, data$Q2, data$Q3, data$Q4)))
两者都无效,可能是因为我的数据不是数字。第一个确实计算了单元格,但没有按照我的要求按 id 分组。有什么函数可以用来计算填充的单元格吗?我如何编辑它以计算仅填充“差异”的单元格,以便我可以开始第二步(制作比例)?
解决方案
这是一个正则表达式解决方案grep
:
data$count <- apply(data, 1, function(x) length(grep("[a-z]", x, value = T)))
这里使用您计算在任何行单元格中找到小写字母length
的次数。grep
结果:
data
id Q1 Q2 Q3 Q4 count
1 1 same diff same diff 4
2 2 diff diff diff same 4
3 3 <NA> same <NA> <NA> 1
4 4 <NA> diff <NA> <NA> 1
5 5 <NA> <NA> diff <NA> 1
推荐阅读
- javascript - 如何使用 socket.io 将客户端连接到远程 node.js 服务器
- c# - 使用实体框架按 ID 获取记录
- camunda - 在 Camunda 中启用调试
- spring-boot - 在 spring 中测试同步方法/块
- java - 如何在recyclerview中获取已保存帖子的当前状态
- ios - 当应用程序处于非活动状态(例如在后台播放音乐)时如何调用函数?
- reactjs - 反应原生应用程序中的反应 js 网站
- autodesk-forge - 查看器 GUI 外的 div 中的 ModelStructurePanel 实例
- c++ - 消息并不总是出现在输入错误中
- python - 安装 pycairo 时遇到问题,有什么关于下一步尝试的建议吗?