2017-11-15 40 views
1

キーワードリスト(1キーワード/行)でデータセットを取得しました。アルファベット順に単語の順序を変更するには

  1. 私は、KEYWORD列に基づいて新しい列(ALPHABETICAL)を作成する方法を探しています。 ALPHABETICAL列の値は、キーワードに基づいて自動的に生成されるはずですが、単語はアルファベット順に並べ替える必要があります。このよう

:あなたの助けを

| 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  | 

ありがとう!

+0

あなたがしようとしている任意の試みがありますか? – storaged

答えて

0

一つの解決策は、最後の行は、分割する)(str_splitを使用ベクトルのリストにKEYWORDS;ソートは各リスト要素に適用されます。ベクトルはペーストを使用して連結され、最後にリストはベクトルに分割されます。

結果が

> cbind(KEYWORDS, ALPHABETICAL) 
    KEYWORDS    ALPHABETICAL   
[1,] "house blue"   "blue house"   
[2,] "blue house"   "blue house"   
[3,] "my blue house"  "blue house my"  
[4,] "this house is blue" "blue house is this" 
[5,] "sky orange"   "orange sky"   
[6,] "orange sky"   "orange sky"   
[7,] "the orange sky"  "orange sky the" 
+0

ために! – Remi

6

ソート、" "strsplit)により分割し、バック崩壊する行を反復処理:dplyr + stringr

library(dplyr) 
library(stringr) 
KEYWORDS <- c('house blue','blue house','my blue house','this house is blue','sky orange','orange sky','the orange sky') 

ALPHABETICAL <- KEYWORDS %>% str_split(., ' ') %>% lapply(., 'sort') %>% lapply(., 'paste', collapse=' ') %>% unlist(.) 

# 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 
+0

ありがとうございますが、特定の列キーワードをアルファベット順にするにはどうすればよいですか? (私の実際のデータセットにはいくつかの他のカラムが含まれています) – Remi

+0

@Remiは特定のカラムをターゲットにします 'sapply(df $ KEYWORD、' 'apply(df、1、...)の代わりに... ' – PoGibas

0
df$ALPHABETICAL <- sapply(strsplit(df$KEYWORD," "),function(x) paste(sort(x),collapse=" ")) 

df 
#    KEYWORD  ALPHABETICAL 
# 1   house blue   blue house 
# 2   blue house   blue house 
# 3  my blue house  blue house my 
# 4 this house is blue blue house is this 
# 5   sky orange   orange sky 
# 6   orange sky   orange sky 
# 7  the orange sky  orange sky the 

データ

df <- data.frame(KEYWORD = c(
    'house blue', 
    'blue house', 
    'my blue house', 
    'this house is blue', 
    'sky orange', 
    'orange sky', 
    'the orange sky'),stringsAsFactors = FALSE) 
関連する問題