R中的For循环用于数据编译

For loops in R for data compilation

本文关键字:数据 编译 用于 循环 中的 For      更新时间:2023-09-26

我有一个数据帧,其中有一列填充了0和1。下面是该数据的示例:

0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0  ... etc. 

我需要格式化数据,以便它计算连续0和1的数量,如下所示:

0  -  5
1  -  4
0  -  10
1  -  3
0  -  1
1  -  2
0  -  4

我是R的新手,不知道如何做到这一点,但这是我如何在JavaScript中做到这一点。我想要一些关于如何在r中复制这个结果的指导,提前感谢您的帮助!

var data = [0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0];
var result = [];
for (var i = 0; i < data.length; i++) {
  var item = {};
  item[data[i]] = 1;
  if (!result.length) {
    result.push(item);
  } else {
    var lastItem = result[result.length - 1];
    if (lastItem[data[i]]) {
      lastItem[data[i]] += 1;
    } else {
      result.push(item);
    }
  }
}
console.log(result)

有一个函数。rle计算向量中每个元素的运行长度。输出有两个部分,运行的长度和值本身:

rle(x)
#Run Length Encoding
#  lengths: int [1:7] 5 4 10 3 1 2 4
#  values : int [1:7] 0 1 0 1 0 1 0
要创建一个矩阵,可以使用:
with(rle(x), cbind(values, lengths))