gpt4 book ai didi

R Tidyverse 判断哪一列值不一样,返回两个值

转载 作者:行者123 更新时间:2023-12-04 08:43:46 27 4
gpt4 key购买 nike

假设我有这个数据:

df<-data.frame("Row_id"=c(1,2,3,4,5,6,7,8),"A"=c(1,0,1,0,1,0,0,1),"B"=c(0,1,1,0,0,0,0,1),"C"=c(1,0,0,0,0,0,0,1),"D"=c(0,0,0,0,0,0,0,1),"E"=c(0,0,0,0,0,0,0,1),"F"=c(0,0,0,0,0,0,0,1))
正如您所看到的,在大多数行中,值都相同。但是假设我想创建一个新变量(或两个真的)来告诉我:
  • 对于变量 A 到 F
  • ,该行中的所有内容是否相同?
  • 如果不相同,哪些是“1”

  • 因此,例如在上面的数据中,我会得到如下所示的新列:
    enter image description here
    标记为 tidyverse 因为我想我更喜欢那个,但灵活。

    最佳答案

    我们可以使用 rowSums在除第一列之外的列上通过与第二列进行比较来创建逻辑向量。如果行明智总和为“n1”,则通过加 1 将其转换为数字索引,并使用它来将值更改为“否”、"is"。然后,我们通过遍历行来创建“不同”列,paste names不为 0 的元素(在这里,我们也可以使用基于“相同”列的 ifelse

    n1 <- ncol(df[-1])
    df$Same <- c("No", "Yes")[(rowSums(df[-1] == df[,2]) == n1) + 1]
    df$Different <- apply(df[2:7], 1, function(x)
    if(!all(x == 1)) toString(names(x)[x !=0 ]) else "")

    关于R Tidyverse 判断哪一列值不一样,返回两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64433901/

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