【发布时间】:2015-04-17 15:17:23
【问题描述】:
这可能非常简单,但我想不出办法来做到这一点。我有一些看起来像这样的数据:
domain difference
xxxx 0
xxxx 2
xxxx 14
xxxx 3
xxxx 7
xxxx 2
yyyy 6
yyyy 5
yyyy 13
yyyy 10
zzzz 2
zzzz 5
zzzz 1
zzzz 15
zzzz 16
zzzz 8
zzzz 9
我希望它看起来像这样:
domain difference grp
xxxx 0 1
xxxx 2 1
xxxx 14 2
xxxx 3 2
xxxx 7 2
xxxx 2 2
yyyy 6 1
yyyy 5 1
yyyy 13 1
yyyy 10 1
zzzz 2 1
zzzz 5 1
zzzz 1 1
zzzz 15 2
zzzz 16 3
zzzz 8 3
zzzz 9 3
所以基本上按域,如果差异大于或等于 14,我想为几行分配一个组号。当差异大于或等于 14 时,为前面的行分配一个组号。
我尝试使用嵌套的 for 循环,其中域是级别,但我觉得这可能不必要地复杂,我不知道如何告诉循环继续前进并在之后从中断的地方继续分配第一个组号。到目前为止,这是我所拥有的:
lev <- levels(e_won$domain)
lev <- levels(e_won$domain)
for (i in 1:length(lev)) {
for (j in 1:nrow(lev)){
if (difference[j] >= 14) {
grp[1:j] = 1
}
我对非循环解决方案完全持开放态度,但这正是我最初的想法。
【问题讨论】: