2012-11-28 3 views
5

をマージ/参加する私は、このデータを持っているは、データフレームの内側2列

(df <- data.frame(col1 = c('My','Your','His','Thir'), col2 = c('Cat','Dog','Fish','Dog'))) 

    col1 col2 
1 My Cat 
2 Your Dog 
3 His Fish 
4 Thir Dog 

と私は何をしますか、この

`some magic` 

    col1 col2  col3 
1 My Cat My Cat 
2 Your Dog Your Dog 
3 His Fish His Fish 
4 Thir Dog Thir Dog 

のように列を結合したいと?このようなカンマ(、)であっても、

`some magic` 

    col1 col2  col3 
1 My Cat My, Cat 
2 Your Dog Your, Dog 
3 His Fish His, Fish 
4 Thir Dog Thir, Dog 

答えて

7

df$col3 <- paste(df$col1, df$col2, sep=",")です。 sprintfpaste0機能を使用することもできます。

df$col3 <- paste(df$col1, df$col2, sep=",") # comma separator 
df$col3 <- paste0(df$col1, df$col2) # for no separator 
+0

ための単純なラッパーでありますErik Shilts様、魅力的な作品です。ありがとう! –

+0

空の値も扱っているのですが?余分なコンマを処理するにはどうすればいいですか? – Saksham

+0

私はまだあなたの応答を待っています。データが 'col1'が空白で、' col2'がcatであると仮定します。その結果の値は '、cat'ではありません。それに対処する方法?私はちょうど 'cat'が必要です。私たちが複数の列で遊んでいる場合、結果は '、、cat、、dog 'になる可能性があります。 – Saksham

2

あなたが(両方を連結していない文字列)、2のリストとしてそれらを残したい場合は、次のように動作するだけでなく

within(df, col3 <- Map(list, as.character(col1),as.character(col2))) 

    col1 col2  col3 
1 My Cat My, Cat 
2 Your Dog Your, Dog 
3 His Fish His, Fish 
4 Thir Dog Thir, Dog 

Mapmapply(..., SIMPLIFY = FALSE)

+0

ありがとう、これは面白そうです。私は後でそれを使って遊びます。 –

+0

空の値も扱っているのですが?余分なコンマを処理するにはどうすればいいですか – Saksham

+0

私はまだあなたの応答を待っています。データが 'col1'が空白で、' col2'がcatであると仮定します。その結果の値は '、cat'ではありません。それに対処する方法?私はちょうど 'cat'が必要です。複数の列を使用している場合、結果は '、、cat、、dog 'になることもあります – Saksham

関連する問題