我目前工作中的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,只保留在列中的一個。
我目前工作中的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,只保留在列中的一個。
你可能只是做這樣的事情:
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
,它只返回第一個值。
如果列「集羣」包含字符串元素,我們可以使用sub
從base R
做到這一點。我們匹配逗號後跟一個或多個字符,直到字符串結尾,並將其替換爲''
。
df1$cluster <- sub(',.*$', '', df1$cluster)
如果該列是list
,我們使用sapply
以提取所述第一元件
df1$cluster <- sapply(df1$cluster, `[`,1)