r - 计算R中矩阵行中相同值的组数
问题描述
在下面的示例中,我显示了 R 中模拟的矩阵的第一行。行代表我的模拟中的一个人,列代表天。如果一个人在某一天发烧,则在此矩阵中将其编码为“1”。我想输出一个人发烧的次数。在下面的示例中,这将是 4 次(4 组 1)。有谁知道如何对此进行编码以将相邻的 1 计为一次出现?
out_fever[1,]
[1] 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0
解决方案
我们循环使用apply
并使用rle
来计算每行中 1 的块数
out_fever$n_fever <- apply(out_fever, 1, function(x) with(rle(x), sum(values==1)))
对第一行使用可重现的示例
v1 <- c(0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0)
with(rle(v1), sum(values == 1))
#[1] 4
推荐阅读
- slack - 为什么我的 Slack 机器人名称不接受更新?
- c# - 为什么这两个功能没有并行执行
- cuda - cudaMemcpy 返回成功但不复制任何内容
- javascript - While 循环在 P5.js 的函数中不起作用
- xpath - XPath 选择器在 XPath Helper 控制台中有效,但在 scrapy 中无效
- mysql - Mysql“写”命令列表,或者如何判断一个mysql命令是否涉及写操作
- c++ - 有什么方法可以为 std::pair 声明 operator[] 吗?
- vba - 使用 VBA 根据 Access 中的日期组合框从表中创建搜索表单
- postgresql - postgres 只查询没有日期时间列的表
- java - 警告:找不到引用的类