2017-11-15 14 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

하나의 솔루션을 + 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(.) 

마지막 줄은 분할 str_split()를 사용 벡터 목록으로 키워드; 정렬은 각 목록 요소에 적용됩니다. 벡터는 붙여 넣기를 사용하여 연결되고 마지막으로 목록은 벡터로 분리됩니다.

결과는

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

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