gpt4 book ai didi

使用 R 基于两列重新编码到其余列

转载 作者:行者123 更新时间:2023-12-04 05:58:19 25 4
gpt4 key购买 nike

我有大数据,迷你版如下:

    Pr1  <- c("AA", "BB", "BB", "BB", "BB", "--", "AA", "--")
Pr2 <- c("BB", "AA", "AA", "AA", "AA", "--", "--", "BB")
varA <- c("BB", "AA", "AA", "BB", "BB", "AA", "--", "BB")
varB <- c("AA", "BB", "AA", "BB", "BB", "AA", "--", "BB")
varC <- c("AB", "--", "AB", "BB", "AB", "AA", "--", "AB")
varD <- c("BB", "AA", "AB", "BB", "BB", "AB", "AB", "BB")
mydf <- data.frame (Pr1, Pr2, varA, varB, varC, varD)

数据如下所示:
     mydf 

Pr1 Pr2 varA varB varC varD
1 AA BB BB AA AB BB
2 BB AA AA BB -- AA
3 BB AA AA AA AB AB
4 BB AA BB BB BB BB
5 BB AA BB BB AB BB
6 -- -- AA AA AA AB
7 AA -- -- -- -- AB

8 -- BB BB BB AB BB

我需要根据前两个重新编码数据帧中的其余变量:

如果 varA 到 varD 的元素(数据集结束) -
  • 等于 Pr1 值比 varA 到 varD 的元素将是“A”,
  • 等于 Pr2 值比 varA 到 varD 的元素将是“B”
  • 不等于 Pr1 和 Pr2 比 varA 到 varD 将是“H”

  • 然而 -- 是缺失值,上述规则不适用于这种情况。

    如果 Pr1 和 Pr2 缺失 (--),则所有值的比较结果为“NA”。

    因此预期的结果:
       Pr1 Pr2 varA varB varC varD
    1 AA BB B A H B
    2 BB AA B A -- B
    3 BB AA B B H H
    4 BB AA A A A A
    5 BB AA A A H A
    6 -- -- NA NA NA NA
    7 AA -- NA NA NA NA

    8 -- BB NA NA NA NA

    我可以找到一种方法来执行它。

    最佳答案

    编写一个只为 1 行执行此操作的小函数,然后应用它。我发现先转换为矩阵很方便

        mymat <- as.matrix(mydf)
    recodeRows <- function(x){
    if (any(x[1:2]=="--")){
    x[3:ncol(mymat)] <- NA
    } else {
    x[3:ncol(mymat)][x[3:ncol(mymat)]==x[1]] <- "A"
    x[3:ncol(mymat)][x[3:ncol(mymat)]==x[2]] <- "B"
    x[3:ncol(mymat)][!x[3:ncol(mymat)] %in% c("A","B","--")] <- "H"
    }
    x
    }
    t(apply(mymat,1,recodeRows))

    [编辑以包括约翰的 ncol(mymat) 评论]

    关于使用 R 基于两列重新编码到其余列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9233043/

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