2012-11-28 13 views
5

że mam te dane,dołączyć/połączyć dwie kolumny danych wewnątrz ramki

(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 

i chcę połączyć kolumny jak to

`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 

co mam zrobić? może nawet z przecinkiem (,) jak ten,

`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 

Odpowiedz

7

df$col3 <- paste(df$col1, df$col2, sep=","). Można również użyć funkcji sprintf i paste0.

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

Drogi Erik Shilts, działa jak urok. Dzięki! –

+0

co, jeśli mamy do czynienia z pustymi wartościami? jak mamy obsługiwać dodatkowe przecinki – Saksham

+0

Wciąż czekam na twoją odpowiedź. załóżmy, że dane są takie, że 'col1' jest puste, a' col2' ma cat. nie wynikowa wartość to ', cat'. jak sobie z tym poradzić? Potrzebuję tylko "kota". wynikiem może być nawet ',, cat,,, dog' jeśli gramy z wieloma kolumnami – Saksham

2

Jeśli chcesz zostawić je w postaci listy z dwóch (nie string łącząc oba), a następnie dodaje będzie działać dobrze

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 jest prosty wrapper dla mapply(..., SIMPLIFY = FALSE)

+0

Dzięki, to wygląda interesująco. Bawię się z nim później. –

+0

co, jeśli mamy do czynienia z pustymi wartościami? jak sobie radzić z przecinkami – Saksham

+0

Wciąż czekam na twoją odpowiedź. załóżmy, że dane są takie, że 'col1' jest puste, a' col2' ma cat. nie wynikowa wartość to ', cat'. jak sobie z tym poradzić? Potrzebuję tylko "kota". wynikiem może być nawet ',, cat,,, dog' jeśli gramy z wieloma kolumnami – Saksham

Powiązane problemy