Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I got a dataset with a list of keywords (1 keyword / row).

  1. I m looking for a way to create a new column (ALPHABETICAL) based on the KEYWORD column. The value of the ALPHABETICAL column should be auto generated based on the keyword, but words should be ordered alphabetically.

Like this :

 | KEYWORD            | ALPHABETICAL       |
 | house blue         | blue house         | 
 | blue house         | blue house         | 
 | my blue house      | blue house my      | 
 | this house is blue | blue house is this | 
 | sky orange         | orange sky         | 
 | orange sky         | orange sky         | 
 | the orange sky     | orange sky the     | 

Thanks for your help!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
782 views
Welcome To Ask or Share your Answers For Others

1 Answer

Iterate over rows to split by " "(strsplit), sort and collapse back:

# Generate data
df <- data.frame(KEYWORD = c(paste(sample(letters, 3), collapse = " "), 
                             paste(sample(letters, 3), collapse = " ")))
#  KEYWORD
#   z e s
#   d a u

df$ALPHABETICAL  <- apply(df, 1, function(x) paste(sort(unlist(strsplit(x, " "))),
                                                   collapse = " "))
#  KEYWORD ALPHABETICAL
#   z e s        e s z
#   d a u        a d u

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...