我想折叠以下数据框
df
chr start stop gain loss pvalue_gain pvalue_loss
6 68838806 68857819 0 6 1.00000000 0.05105438
9 29779560 29788411 5 1 0.02320654 1.00000000
9 29788411 29809428 5 1 0.02320654 1.00000000
9 29809428 29831788 5 1 0.02320654 1.00000000
9 29831788 29899917 4 1 0.05145798 1.00000000
10 650294 727180 7 0 0.07759025 1.00000000
我想折叠每个 chr,其中连续行上的增益、损失、pvalue_gain 和 pvalue_loss 数字相同。但是,对于数据框折叠时的这些连续行,我想使用这些连续行的第一行的起始编号和这些连续行的最后一个停止编号。
例如-
chr start stop gain loss pvalue_gain pvalue_loss
9 29779560 29788411 5 1 0.02320654 1.00000000
9 29788411 29809428 5 1 0.02320654 1.00000000
9 29809428 29831788 5 1 0.02320654 1.00000000
将折叠为
chr start stop gain loss pvalue_gain pvalue_loss
9 29779560 29831788 5 1 0.02320654 1.00000000
最终输出:
chr start stop gain loss pvalue_gain pvalue_loss
6 68838806 68857819 0 6 1.00000000 0.05105438
9 29779560 29831788 5 1 0.02320654 1.00000000
9 29831788 29899917 4 1 0.05145798 1.00000000
10 650294 727180 7 0 0.07759025 1.00000000
我不确定如何使用聚合函数来执行此操作,希望能提供任何帮助。谢谢!
最佳答案
您可以使用 data.table
包中的 unique
并进行一些修改:
library(data.table)
unique(as.data.table(df)[, stop := stop[.N],
key = .(gain, loss, pvalue_gain, pvalue_loss)])
# chr start stop gain loss pvalue_gain pvalue_loss
# 1: 6 68838806 68857819 0 6 1.00000000 0.05105438
# 2: 9 29831788 29899917 4 1 0.05145798 1.00000000
# 3: 9 29779560 29831788 5 1 0.02320654 1.00000000
# 4: 10 650294 727180 7 0 0.07759025 1.00000000
关于r - 按相似行折叠数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27947089/