我有一个数据框,如下所示:
+------+-----+----------+
| from | to | priority |
+------+-----+----------+
| 1 | 8 | 1 |
| 2 | 6 | 1 |
| 3 | 4 | 1 |
| 4 | 5 | 3 |
| 5 | 6 | 4 |
| 6 | 2 | 5 |
| 7 | 8 | 2 |
| 4 | 3 | 5 |
| 2 | 1 | 1 |
| 6 | 6 | 4 |
| 1 | 7 | 5 |
| 8 | 4 | 6 |
| 9 | 5 | 3 |
+------+-----+----------+
我的目标是基于from列对“ to”列进行分组,但是如果在任一列中都已经存在变量,我就不想再考虑它们了另外,总优先级将是所有组优先级的总和]
因此,结果数据框将如下所示:
+------+------+----------------+
| from | to | Total Priority |
+------+------+----------------+
| 1 | 8, 7 | 6 |
| 2 | 6 | 1 |
| 3 | 4 | 1 |
| 9 | 5 | 3 |
+------+------+----------------+
而且,在分组时,我想保持与原始表相同的顺序
我能够使用“ splitstackshape”包来折叠from列,如下所示:>
library(splitstackshape) cSplit(df, 'to', sep = ',' + , direction = 'long')[, .(to = toString(unique(to))) + , by = from]
这确实引入了双重价值观我想知道是否有办法使用其他任何软件包来获得预期的结果
我的数据框如下:+ ------ + ----- + ---------- + |来自|到|优先| + ------ + ----- + ---------- + | 1 | 8 | 1 | | 2 | 6 | 1 | | 3 | 4 | 1 | | 4 | 5 | ...
不清楚您是如何尝试创建组的,但这至少可以使您处于正确的位置:
使用DF
在注释中可重复显示,最后按from
排序,得到DF2,然后遍历其行,删除任何重复的行。我们这里需要一个循环,因为每次删除都取决于先前的删除。最后总结一下结果。