2017-10-16 36 views
1

我试图将数据转换为我想要的格式。 数据看起来如下将row-based连接到r中字符分隔的列中

id num time 
0  3 4:34 
0  4 4:35 
0  5 4:36 
1  100 5:1 
1  200 5:2 

然后我想将它转换为下面的格式。

id converted format 
0 3,4,5;4:34,4:35,4:36 
1 100,200;5:1,5:2 

正如你所看到的,数据由ID合并,我串连他们使用Num和时间,并使用逗号和每个项目的价值和使用的;用于区分NUM和时间。

如何使用R实现我的目标? 我欣赏任何有助于解决问题的答案。

谢谢。

+0

可能的['by']的组合的选项(https://stat.ethz.ch/R-manual/R-devel/library/base /html/by.html)和['paste'](https://stat.ethz.ch/R-manual/R-devel/library/base/html/paste.html)都可以。使用'library(dplyr)',你可以使用'group_by','summarize'和'paste'。 – r2evans

+0

...为什么?你目前的格式非常有用。 – alistaire

回答

1

这里是tidyverse

library(dplyr) 
df1 %>% 
    group_by(id) %>% 
    summarise_all(toString) %>% 
    unite(convertedformat, num, time, sep="; ") 
1

data.table应该可以帮到这里。

data <- data.frame(id = c(0, 0, 0, 1, 1), 
        num = c(3, 4, 5, 100, 200), 
        time = c("4:34", "4:35", "4:36", "5:1", "5:2")) 
library(data.table) 
setDT(data) 
data[ , .(converted_format = paste(paste(num, collapse = ","), paste(time, collapse = ","), 
      sep = ";")), 
     by = id] 
相关问题