gpt4 book ai didi

r - 仅选择与特定字符串匹配的行

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

我有一个包含 5 个数字列的数据集,例如 {A,B,C,D,E},其中任何列的值可以从 1 到 100 变化。即,

1 <= A/B/C/D/E 中的所有值 <= 100

我们的数据集如下所示:

A  B  C  D  E  
1 5 7 19 2
90 12 8 45 30
30 10 20 50 40 #need this row
33 11 22 55 44
50 40 10 20 30 #and this row
40 40 10 20 30 #not this one

并且我只想过滤包含以下 5 个值中每一个的行,例如:{10,20,30,40,50}。顺序并不重要,但 5 列应包含所有 5 个值。

所以输出应该是这样的:

A  B  C  D  E    
30 10 20 50 40
50 40 10 20 30

我尝试使用大量 ifelse 来过滤所有 5 列条件,但问题是我需要将此概念应用于更复杂的问题,其中它们可能不是定义的否。列甚至定义的“查找”数据集。因此,任何使用 dplyr、data.table、tidyverse 的解决方案都非常受欢迎,但任何人都可以想出的任何其他创意方案请分享。

最佳答案

tb <- data.frame(A = c(1, 90, 30 ,33,50,40),
B = c(5,12,10,11,40,40),
C = c(7,8,20,22,10,10),
D = c(19,45,50,55,20,20),
E = c(2,30,40,44,30,30))

cols <- paste0(c(10,20,30,40,50), collapse = "_")

index <- apply(tb, 1, function(x) paste0(sort(x), collapse = "_") == cols)

tb[index,]

关于r - 仅选择与特定字符串匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55795862/

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