【发布时间】:2018-01-13 09:51:18
【问题描述】:
请看一下这个简单的数据框:
1 4 a
2 5 b
3 6 c
4 7 d
5 8 e
6 9 f
7 10 g
暂时忽略第三列。我想创建一个带有二进制变量的第四列,该变量表示特定行是前一行的延续。
让我举例说明,
1 4 a 1
2 5 b 0
3 6 c 0
4 7 d 1
5 8 e 0
6 9 f 0
7 10 g 1
第一行我们从“1 到 4”开始,这是我们的基础,路径的起点。 在下一行我们有“2 到 5”,但由于我们已经在 4,所以数字 2 不是延续,所以,第四列得到一个“0”。这一行与我们的基地断开连接。 在下一行“3 到 6”中,再次断开连接,因为我们已经在 4,我们应该在 4 处重新开始。
这正是接下来发生的事情……“4 到 7”与第一行相连,因此第四列得到“1”。 同样,只有“7 到 10”行重新连接路径并获得“1”
最终我想过滤“1s”,因为字母列包含重要信息。但这很容易使用 dplyr。算了。
我失败的方法是这样的:我用 i 和 j 创建了一个循环,它将搜索第 2 列中的值何时等于第 1 列中的值,再往下。问题是,例如“2 到 5”行也与“5 到 8”行连接,并且会收到“1”
我看不到如何指示循环在找到第一个连接时“4 到 7”将该结果用作新的基础。只有这样,下一个正回报就是以 7 开头的行。
我的头好痛。我希望头脑冷静的人能给我指点光明。
谢谢大家。
【问题讨论】:
标签: r loops for-loop foreach while-loop