【发布时间】:2014-08-12 08:32:54
【问题描述】:
我有一个data.frame,看起来像这个例子data.frame:
df = data.frame(id = c("a","b","c","d","e","f","g"), start = c(10,20,30,40,50,60,70), end = c(15,25,35,45,55,65,75), flag = c(0,1,1,0,1,0,1))
> df
id start end flag
1 a 10 15 0
2 b 20 25 1
3 c 30 35 1
4 d 40 45 0
5 e 50 55 1
6 f 60 65 0
7 g 70 75 1
它按df$start 和df$end 的升序排列。
我正在寻找一个函数,它将所有行与df$flag == 1 合并,这些行不会被df$flag == 0 的行干预。合并的行应该将它们的df$id 与逗号分隔符连接起来,它们的df$start 应该是带有min df$start 的行,它们的df$end 应该是带有max @987654334 的行@。最后,df$flag 对他们来说应该是 1。
所以对于这个例子,返回 data.frame 应该是:
res.df = data.frame(id = c("a","b,c","d","e","f","g"), start = c(10,20,40,50,60,70), end = c(15,35,45,55,65,75), flag = c(0,1,0,1,0,1))
> res.df
id start end flag
1 a 10 15 0
2 b,c 20 35 1
3 d 40 45 0
4 e 50 55 1
5 f 60 65 0
6 g 70 75 1
【问题讨论】:
-
您能否澄清
end的值?根据您的解释,听起来应该是 35,但您的res.df显示为 25。 -
很抱歉。现在已经修好了。
-
还有一个问题:合并的行是否会超过两行?