【发布时间】:2018-06-21 08:56:16
【问题描述】:
我有以下几点:
df <- data.frame(ID = c(1,1,1,1,1,1,1,1,1,1,2,2,2),
Obs = c(0,1, 1, 0, 1,0,0, 1, 1, 1, 0,0,1))
我想要这个:
df <- data.frame(ID = c(1,1,1,1,1,1,1,1,1,1,2,2,2),
Obs = c(0,1, 1, 0, 1,0,0, 1, 1, 1, 0,0,1),
Cluster = c(0,1,1,1,2,2,2,3,3,3,0,0,1))
如何使用 dplyr 获得 'Cluster' 列,在该列中我必须对 1 的数量进行排序,直到第一个 0 出现?
连续的 0 必须保持该值,直到出现新的值。
编辑
如果有很多列,我该怎么做?
假设我有 99 个 obs 列,我想创建 99 个集群,每列一个。像这样:
df <- data.frame(ID = c(1,1,1,1,1,1,1,1,1,1,2,2,2),
Obs1 = c(0,1, 1, 0, 1,0,0, 1, 1, 1, 0,0,1),
Obs2 = c(0,0, 0, 1, 1,1,0, 1, 0, 1, 0,0,1),
ClusterObs1 = c(0,1,1,1,2,2,2,3,3,3,0,0,1),
ClusterObs2 = c(0,0,0,1,1,1,1,2,2,3,0,0,1))
【问题讨论】: