2017-10-16 14 views
1

データを私が望む形式に変換しようとしています。行ベースの文字列で区切られた1つの列に連結

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によって合成され、Iはnumと時間を使用してそれらを連結し、各項目の値のカンマ区切り文字を使用し、区別numと時間;を用います。

Rを使用して目標を達成するにはどうすればよいですか? 私の問題に役立つ回答をいただきありがとうございます。

ありがとうございました。

+0

とオプションであります/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

は[ `by`(https://stat.ethz.ch/R-manual/R-devel/library/baseおそらく組み合わせ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] 
関連する問題