gpt4 book ai didi

r - 有条件地将列中的子字符串值替换为其他列的子字符串

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

假设您有以下简单的数据框:

Input <- c("X0_1-2 + X1_1-2","X0_1-2 + X1_1-2","X0_1-3 + X1_1-3","X0_3-2 + X1_3-2","X0_3-1 + X1_3-1","X0_2-1 + X1_2-1","X0_2-3 + X1_2-3","X0_13-1 + X1_13-1")
State1 <- c("1-3","1-3","1-2","3-1","3-2","2-1","2-1","13-3")
State2 <- c("1-2","1-2","1-3","3-2","3-1","2-3","2-3","13-1")
DataFrame <- cbind(Input,State1,State2)
DataFrame <- as.data.frame(DataFrame)

产量

            Input State1 State2
1 X0_1-2 + X1_1-2 1-3 1-2
2 X0_1-2 + X1_1-2 1-3 1-2
3 X0_1-3 + X1_1-3 1-2 1-3
4 X0_3-2 + X1_3-2 3-1 3-2
5 X0_3-1 + X1_3-1 3-2 3-1
6 X0_2-1 + X1_2-1 2-1 2-3
7 X0_2-3 + X1_2-3 2-1 2-3
8 X0_13-1 + X1_13-1 13-3 13-1

我试图想出一种聪明的方法来添加一个与“输入”列相等的额外列,但“_”后面的值是State1或State2的子串,根据它与Inp​​ut中相应的子串不同,即在这种情况下期望的结果是

            Input State1 State2          Outcome
1 X0_1-2 + X1_1-2 1-3 1-2 X0_1-3 + X1_1-3
2 X0_1-2 + X1_1-2 1-3 1-2 X0_1-3 + X1_1-3
3 X0_1-3 + X1_1-3 1-2 1-3 X0_1-2 + X1_1-2
4 X0_3-2 + X1_3-2 3-1 3-2 X0_3-1 + X1_3-1
5 X0_3-1 + X1_3-1 3-2 3-1 X0_3-2 + X1_3-2
6 X0_2-1 + X1_2-1 2-1 2-3 X0_2-3 + X1_2-3
7 X0_2-3 + X1_2-3 2-1 2-3 X0_2-1 + X1_2-1
8 X0_13-1 + X1_13-1 13-3 13-1 X0_13-3 + X1_13-3

但是到目前为止还没有成功。

其想法是用 State1 或 State2 的值(以不同者为准)替换输入字段中总和两侧 _ 之后的任何内容。

任何想法/意见都将受到高度赞赏。谢谢!

最佳答案

如果我理解正确的话,Input表示的状态和Outcome "XO" 都是相同的和 "X1"字符串的一部分。另外State1State2永远不会一样。在这种情况下,您可以从输入中提取状态,将其与两个状态之一进行比较,然后将输出字符串粘贴在一起:

output <- ifelse(substring(DataFrame$Input, 13) == State1, State2, State1)
DataFrame$Outcome <- paste("X0_", output, " + X1_", output, sep = "")
DataFrame
# Input State1 State2 Outcome
# 1 X0_1-2 + X1_1-2 1-3 1-2 X0_1-3 + X1_1-3
# 2 X0_1-2 + X1_1-2 1-3 1-2 X0_1-3 + X1_1-3
# 3 X0_1-3 + X1_1-3 1-2 1-3 X0_1-2 + X1_1-2
# 4 X0_3-2 + X1_3-2 3-1 3-2 X0_3-1 + X1_3-1
# 5 X0_3-1 + X1_3-1 3-2 3-1 X0_3-2 + X1_3-2
# 6 X0_2-1 + X1_2-1 2-1 2-3 X0_2-3 + X1_2-3
# 7 X0_2-3 + X1_2-3 2-1 2-3 X0_2-1 + X1_2-1
# 8 X0_13-1 + X1_13-1 13-3 13-1 X0_13-3 + X1_13-3

此解决方案适用于任何长度的“状态”子字符串(例如, "1-1" and "201-14") expressed by the Input` 变量。您可以使用正则表达式,但在这种情况下,基于位置提取有效(并且效率更高)。

关于r - 有条件地将列中的子字符串值替换为其他列的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50953379/

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