R:按分隔符拆分字符串向量并重新排列
我有一个字符串向量,需要以某种方式在矩阵中拆分和重新排列。我知道如何进行拆分/简单的重新排列,但我不知道如何按我想要的方式重新排列:R:按分隔符拆分字符串向量并重新排列,r,stringi,R,Stringi,我有一个字符串向量,需要以某种方式在矩阵中拆分和重新排列。我知道如何进行拆分/简单的重新排列,但我不知道如何按我想要的方式重新排列: library(stringi) vec = c("b;a;c","a;c","c;b") q = stri_split_fixed(vec, ";", simplify = TRUE,fill=T) View(q) V1 V2 V3 b a c a c c b 期望输出 V1 V2 V3 a b c a
library(stringi)
vec = c("b;a;c","a;c","c;b")
q = stri_split_fixed(vec, ";", simplify = TRUE,fill=T)
View(q)
V1 V2 V3
b a c
a c
c b
期望输出
V1 V2 V3
a b c
a c
b c
谢谢大家!!
编辑:
上面的字母是为了简单。实物期权包括(并非详尽的列表):D-Amazon Marketplace
、U-Amazon
、D-Amazon
、U-Jet
,等等。但仅以U
和D
开头
订单-按字母顺序排列,但按零售商分组。如果太复杂-没有顺序是可以的此解决方案生成一个布尔矩阵,每个向量作为行,每个可能的字符作为列
possible_options = c('a', 'b', 'c')
result <- sapply(possible_options, function(x) apply(q, 1, function(y) x %in% y))
result
a b c
[1,] TRUE TRUE TRUE
[2,] TRUE FALSE TRUE
[3,] FALSE TRUE TRUE
你能一直假设第一行包含所有的因子/字母吗?不,任意长度你知道总共有多少个选项吗?或者,顺序是重要的还是只需要将同一列中相同的字符分组?我想您需要一个更完整的示例,如果第一行是
b,a,c,uud
,会发生什么情况?d
是否移过去?我先按摩数据,这样就可以有字母字符了
result <- sapply(c(letters, LETTERS), function(x) apply(q, 1, function(y) x %in% y))
result <- result[, colSums(result) > 0]
result
a b c
[1,] TRUE TRUE TRUE
[2,] TRUE FALSE TRUE
[3,] FALSE TRUE TRUE
opts <- as.character(unique(unlist(q)))
opts <- opts[sort.list(opts[opts != ''])]
result <- sapply(opts , function(x) apply(q, 1, function(y) x %in% y))
result
a b c
[1,] TRUE TRUE TRUE
[2,] TRUE FALSE TRUE
[3,] FALSE TRUE TRUE