如何在R中将两行合并为一行?

如何在R中将两行合并为一行?,r,merge,R,Merge,我正在R中寻找一种将成对的行合并为一行的解决方案 任务 开始时间 结束时间 程序设计 13:35 13:50 程序设计 14:00 15:40 生产 15:45 16:00 质量检验 16:15 16:30 质量检验 16:45 17:00 对于每个任务,您可以提取第一个开始时间和最后一个结束时间 library(dplyr) df %>% group_by(Task) %>% summarise(Starttime = first(Starttime),

我正在R中寻找一种将成对的行合并为一行的解决方案

任务 开始时间 结束时间 程序设计 13:35 13:50 程序设计 14:00 15:40 生产 15:45 16:00 质量检验 16:15 16:30 质量检验 16:45 17:00
对于每个
任务
,您可以提取第一个
开始时间
和最后一个
结束时间

library(dplyr)

df %>%
  group_by(Task) %>%
  summarise(Starttime = first(Starttime), 
            Endtime = last(Endtime))

# Task              Starttime Endtime
#  <chr>             <chr>     <chr>  
#1 Production        15:45     16:00  
#2 Programming       13:35     15:40  
#3 QualityInspection 16:15     17:00  
库(dplyr)
df%>%
分组依据(任务)%>%
总结(开始时间=第一个(开始时间),
结束时间=最后一次(结束时间))
#任务开始时间结束时间
#                      
#1制作15:45 16:00
#2编程13:35 15:40
#3质量检查16:15 17:00
数据

df <- structure(list(Task = c("Programming", "Programming", "Production", 
"QualityInspection", "QualityInspection"), Starttime = c("13:35", 
"14:00", "15:45", "16:15", "16:45"), Endtime = c("13:50", "15:40", 
"16:00", "16:30", "17:00")), class = "data.frame", row.names = c(NA, -5L))

df对于每个
任务
您可以提取第一个
开始时间
和最后一个
结束时间

library(dplyr)

df %>%
  group_by(Task) %>%
  summarise(Starttime = first(Starttime), 
            Endtime = last(Endtime))

# Task              Starttime Endtime
#  <chr>             <chr>     <chr>  
#1 Production        15:45     16:00  
#2 Programming       13:35     15:40  
#3 QualityInspection 16:15     17:00  
库(dplyr)
df%>%
分组依据(任务)%>%
总结(开始时间=第一个(开始时间),
结束时间=最后一次(结束时间))
#任务开始时间结束时间
#                      
#1制作15:45 16:00
#2编程13:35 15:40
#3质量检查16:15 17:00
数据

df <- structure(list(Task = c("Programming", "Programming", "Production", 
"QualityInspection", "QualityInspection"), Starttime = c("13:35", 
"14:00", "15:45", "16:15", "16:45"), Endtime = c("13:50", "15:40", 
"16:00", "16:30", "17:00")), class = "data.frame", row.names = c(NA, -5L))

df使用
数据表

library(data.table)
setDT(df)[, .(Starttime = first(Starttime), Endtime = last(Endtime)), Task]

使用
数据表

library(data.table)
setDT(df)[, .(Starttime = first(Starttime), Endtime = last(Endtime)), Task]

或者Starttime=min(Starttime)和Endtime=max(Endtime)?@Billy34这行不通,因为除非提问者没有告诉我们,时间是字符向量。这些不会按时间顺序排列。好的观点:-)我忽略了这一点,或者可能是Starttime=min(Starttime)和Endtime=max(Endtime)?@Billy34这不起作用,因为除非提问者没有告诉我们,时间是字符向量。这些不会按时间顺序排列。好的一点:-)我忽略了这一点