gpt4 book ai didi

R匹配并替换数据框中的模式

转载 作者:行者123 更新时间:2023-12-04 09:52:59 25 4
gpt4 key购买 nike

我有一个包含三种类型 AA、AB 和 BB 的数据框。之后,有包含不同类型的样本 1000 到 1005。但是,有些字符串是 BA 类型,而不是 2 AB 类型,因此我想更改字符串以匹配 2 类类别。

输入:

Type 1  Type 2  Type 3  1000    1001    1002    1003    1004    1005
AA AB BB BB BB AB BA AA BA
CC AC AA CA CA CC AA AA AC
EE EF FF EF FF FE FE EE FF

期望的输出:

Type 1  Type 2  Type 3  1000    1001    1002    1003    1004    1005
AA AB BB BB BB AB AB AA AB
CC AC AA AC AC CC AA AA AC
EE EF FF EF FF EF EF EE FF

最佳答案

如果我们需要根据“Type_2”列中的值更改数字列值,即反向值应更改为“Type_2”的值,那么一个选项是 apply with MARGIN = 1(遍历行),将元素从 4 到最后一个(x[4:length(x)] - 对应于数字中的元素列名), 检查第一个字符是否不等于第二个字符 (substr(x1, 1, 1) != substr(x1, 2, 2)) 和 (&) 是否不等于 'Type_2' (x1 != x[2]),那么我们使用 sub 来反转 'x1 中元素的顺序' 或 else 返回 'x1' (ifelse(...)),将输出分配回原始向量 (x[4:length(x) ]),返回 'x',转置 (t) 输出并将值分配回 'df1'。

df1[] <- t(apply(df1, 1, FUN = function(x) {
x1 <- x[4:length(x)]
x[4:length(x)] <- ifelse(substr(x1,1,1)!= substr(x1,2,2) & x1 != x[2],
sub("(.)(.)", "\\2\\1", x1), x1)
x}))
df1
# Type_1 Type_2 Type_3 1000 1001 1002 1003 1004 1005
#1 AA AB BB BB BB AB AB AA AB
#2 CC AC AA AC AC CC AA AA AC
#3 EE EF FF EF FF EF EF EE FF

数据

 df1 <-  structure(list(Type_1 = c("AA", "CC", "EE"), Type_2 = c("AB", 
"AC", "EF"), Type_3 = c("BB", "AA", "FF"), `1000` = c("BB", "CA",
"EF"), `1001` = c("BB", "CA", "FF"), `1002` = c("AB", "CC", "FE"
), `1003` = c("BA", "AA", "FE"), `1004` = c("AA", "AA", "EE"),
`1005` = c("BA", "AC", "FF")), .Names = c("Type_1", "Type_2",
"Type_3", "1000", "1001", "1002", "1003", "1004", "1005"),
class = "data.frame", row.names = c(NA, -3L))

关于R匹配并替换数据框中的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38737064/

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