【发布时间】:2015-02-24 16:41:12
【问题描述】:
我需要使用自定义函数作为分组标准从我的数据框中创建行组。该函数将比较两对行,如果这些行应该组合在一起,则返回 true/false。
在如下示例数据集中:
id field code1 code2
1 textField1 055 066
2 textField2 100 120
3 textField3 300 350
4 textField4 800 450
5 textField5 460 900
6 textField6 490 700
...
该函数通过对 (function(row1,row2)) 检查行字段之间的某些规则,如果这些行应该在一起,则返回 TRUE / FALSE。 p>
我需要将该函数应用于数据框中的所有可能对,并生成一个列表(或其他结构),其中所有 ID 匹配在一起。
将函数应用于每一对的一种方法显示在this answer 中:
lapply(seq_len(nrow(df) - 1),
function(i){
customFunction( df[i,], df[i+1,] )
})
但我想不出一种方法来对得到 TRUE 结果的行进行分组
编辑:重新阅读我的问题,似乎需要一个例子:
如果我们创建一个包含所有可能组合的矩阵,结果将是:
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] TRUE FALSE FALSE FALSE FALSE FALSE
[2,] FALSE TRUE TRUE TRUE FALSE FALSE
[3,] FALSE TRUE TRUE FALSE FALSE FALSE
[4,] FALSE TRUE FALSE TRUE FALSE FALSE
[5,] FALSE FALSE FALSE FALSE TRUE TRUE
[6,] FALSE FALSE FALSE FALSE TRUE TRUE
那么结果组将是:
1
2,3,4
5,6
【问题讨论】:
-
不清楚您是否只想将所有
TRUEs 和所有FALSEs 聚合在一起,或者您只想将连续的TRUEs 和FALSE聚合在一起。例如,如果您得到T, T, T, F, F, T,T,那么输出将是1,2,3,然后是4,5,然后是6,7?还是您只是1,2,3,6,7与4,5?或者也许是第三种选择? -
用另一个例子改变了例子。这是否更好地解释了我试图完成的事情?
标签: r