2015-10-16 46 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)