2012-11-28 24 views
5

Nói rằng tôi có dữ liệu này,tham gia/sáp nhập hai cột bên trong một dữ liệu-frame

(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 

và tôi muốn kết hợp các cột như thế này

`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 

Tôi phải làm gì? có thể ngay cả với dấu phẩy (,) như thế này,

`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 

Trả lời

7

df$col3 <- paste(df$col1, df$col2, sep=","). Bạn cũng có thể sử dụng các hàm sprintfpaste0.

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

Kính gửi Erik Shilts, hoạt động như một sự quyến rũ. Cảm ơn! –

+0

nếu chúng ta đang xử lý các giá trị rỗng thì sao? làm cách nào để chúng tôi xử lý thêm dấu phẩy – Saksham

+0

Tôi vẫn đang chờ phản hồi của bạn. giả sử dữ liệu là 'col1' là trống và' col2' có con mèo. không phải giá trị kết quả là ', mèo'. làm thế nào để đối phó với điều đó? Tôi chỉ cần 'mèo'. kết quả thậm chí có thể là ',, cat,,, dog' nếu chúng ta đang chơi với nhiều cột – Saksham

2

Nếu bạn muốn để lại chúng như là một danh sách của hai, (không phải là một chuỗi concatenating cả hai) thì sau đây sẽ làm việc tốt

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 

Map là một wrapper đơn giản cho mapply(..., SIMPLIFY = FALSE)

+0

Cảm ơn, điều này có vẻ thú vị. Tôi sẽ chơi với nó sau. –

+0

nếu chúng ta đang xử lý các giá trị rỗng thì sao? làm cách nào để chúng tôi xử lý thêm dấu phẩy – Saksham

+0

Tôi vẫn đang chờ phản hồi của bạn. giả sử dữ liệu là 'col1' là trống và' col2' có con mèo. không phải giá trị kết quả là ', mèo'. làm thế nào để đối phó với điều đó? Tôi chỉ cần 'mèo'. kết quả thậm chí có thể là ',, cat,,, dog' nếu chúng ta đang chơi với nhiều cột – Saksham

Các vấn đề liên quan