2015-10-16 80 views
1

我目前工作中的R一個項目,我有一個接收從選擇一個特定的商店所屬的模式集羣k均值模型輸出的列的雙列。不幸的是,有一個領域,所以列中的一個實例被分配到兩個集羣。看下面的例子輸出。這些列分別是rownumber,Store和Cluster。拆分包含R中

row store cluster 
759 759  3 
760 760  3 
761 761  3 
762 762  1, 3 
763 763  3 
764 764  1 

我需要打破1,3,只保留在列中的一個。

回答

0

你可能只是做這樣的事情:

my_data <- dplyr::data_frame("row" = 759:764, "store" = 759:764, "cluster" = c("3", "3", "3", "1, 3", "3", "1")) 
my_data 
Source: local data frame [6 x 3] 

    row store cluster 
1 759 759  3 
2 760 760  3 
3 761 761  3 
4 762 762 1, 3 
5 763 763  3 
6 764 764  1 
my_data$cluster <- my_data$cluster %>% stringr::str_extract("[^,]") 
my_data 
Source: local data frame [6 x 3] 

    row store cluster 
1 759 759  3 
2 760 760  3 
3 761 761  3 
4 762 762  1 
5 763 763  3 
6 764 764  1 

的代碼行設置my_data$cluster告訴R鍵提取了從一個字符串,它是不是一個逗號;一旦達到逗號就停止。由於我們使用stringr::str_extract而不是stringr::str_extract_all,它只返回第一個值。

0

如果列「集羣」包含字符串元素,我們可以使用subbase R做到這一點。我們匹配逗號後跟一個或多個字符,直到字符串結尾,並將其替換爲''

df1$cluster <- sub(',.*$', '', df1$cluster) 

如果該列是list,我們使用sapply以提取所述第一元件

df1$cluster <- sapply(df1$cluster, `[`,1)