Frage Join / Merge zwei Spalten innerhalb eines Datenrahmens


Sag, dass ich diese Daten habe,

(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

und ich möchte die Spalten so kombinieren

`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

Was mache ich? vielleicht sogar mit einem Komma (,) so,

`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

5
2017-11-28 01:12


Ursprung


Antworten:


df$col3 <- paste(df$col1, df$col2, sep=","). Sie können auch die sprintf und paste0 Funktionen.

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

7
2017-11-28 01:15



Wenn Sie sie als eine Liste der beiden lassen wollen (keine Zeichenfolge, die beide verkettet), dann wird das Folgende gut funktionieren

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 ist ein einfacher Wrapper für mapply(..., SIMPLIFY = FALSE)


2
2017-11-28 01:29