gpt4 book ai didi

R:按分隔符拆分字符串向量并重新排列

转载 作者:行者123 更新时间:2023-12-02 01:01:22 25 4
gpt4 key购买 nike

我有一个字符串向量,需要以某种方式在矩阵中拆分和重新排列。我知道如何进行拆分/简单重新排列,但不知道如何重新排列我想要的方式:

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 MarketplaceU-AmazonD-AmazonU-Jet 等。不过,仅以 UD 开头。

订单 - 按字母顺序排列但按零售商分组。如果太复杂-没有顺序是可以的

最佳答案

此解决方案生成一个 bool 矩阵,每个向量作为行,每个可能的字符作为列。

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

此解决方案需要所有选项的列表。如果没有,您可以列出所有可能的选项(例如所有字母数字字符),然后删除空白行:

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

或者从q

的结果中提取它们
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

关于R:按分隔符拆分字符串向量并重新排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50397981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com