gpt4 book ai didi

r - 根据特定单元格值捕获列名称

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

我拥有的是如下所示的数据集

    A        B        C
Yes No No
No Yes No
No No Yes
Yes No Yes
No Yes Yes

我有兴趣创建一个新列 D,它存储列名称,其中单元格值 == Yes。最终所需的输出应如下所示

           A        B        C      Result
Yes No No A
No Yes No B
No No Yes C
Yes No Yes A,C
No Yes Yes B,C

这就是我到目前为止所做的,非常笨拙。

df$d1 <- ifelse(df[,1]=="Yes", paste(colnames(df[1])),"" )
df$d2 <- ifelse(df[,2]=="Yes", paste(colnames(df[2])),"" )
df$d3 <- ifelse(df[,3]=="Yes", paste(colnames(df[3])),"" )

但我对一种有效的方法感兴趣。非常感谢任何帮助。

最佳答案

首先让我们看看"is"在哪里。这将是一个逻辑矩阵:

yes_mat = data == "Yes"

对于每一行,您希望数据框的名称为 Yes,names(data)[x],其中 xyes_mat 中的一行。将函数应用于矩阵的行最好使用 apply 来完成。我们将把匹配的行粘贴在一起,并用逗号折叠:

apply(yes_mat, 1, FUN = function(x) paste(names(data)[x], collapse = ","))
# [1] "A" "B" "C" "A,C" "B,C"

关于r - 根据特定单元格值捕获列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34729261/

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