【发布时间】:2017-03-09 07:32:08
【问题描述】:
我有一个数据框,其中有一列填充了 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)
【问题讨论】:
-
幸好你正在迁移到 R。试试
rle(x) -
@PierreLafortune 哈哈,谢谢,我也是 JavaScript 新手,所以这可能不是最有效的方法!我如何将其转换为表/数据框/矩阵?我试过 matrix(unlist ( rle(data) ), ncol = 2, byrow = TRUE) 但这不太对。
-
* 我想转换它以便于查看,因为我有超过一百万个观察值。
-
我添加了一个编辑
-
谢谢! @PierreLafortune,效果很好!
标签: javascript r for-loop append