【发布时间】:2016-07-07 10:38:08
【问题描述】:
我有这个例子data.frame:
df <- data.frame(a = c(1,2,3,5,7,8),b=c(2,3,4,6,8,9))
我想折叠所有行 i,其 b 列值等于其后续行 (a) 的列值 (i+1) 以便在折叠行中它们的 a 列将是i 行的列,它们的b 列将是i+1 行的列。只要没有满足此条件的连续行,就必须这样做。
对于示例df,第 1-3 行将被折叠,第 4 行保持原样,然后第 5-6 行被折叠,给出:
res.df <- data.frame(a = c(1,5,7), b = c(4,6,9))
【问题讨论】:
-
你确定'b'中的值对于res.df是正确的
-
是的。第 1-3 行和第 5-6 行已折叠,第 4 行保持原样。
-
你提到的条件没有给出预期的输出
-
或许编辑后的问题更清晰?
-
你可以用
data.frame(a = df$a[!df$a %in% df$b], b = df$b[!df$b %in% df$a])来做正确的事情,但我真的认为你必须用lag和rle来发挥创意。