Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用循环检查多列中是否存在某些值_R - Fatal编程技术网

R 使用循环检查多列中是否存在某些值

R 使用循环检查多列中是否存在某些值,r,R,我的数据集包含多个列,其中有6个称为ID1、ID2、ID3、ID13、ID23、ID33,其中包含多个ID。我的目标是检查哪些行包含某些值(本例中的值以531或532或533或534开头),并将这些值子集到新的数据集中 这段代码为所有行的数据子集,其中任何一列中的ID正好是531,但我不知道如何使其只检查从531开始的值,以及如何使其检查所有4个起始值:531、532、533和534(不使用更多的条件语句) 对于格式设置,我深表歉意(确实缺少一些数据点) 感谢虽然您的问题有点不清楚(我不确定在此

我的数据集包含多个列,其中有6个称为ID1、ID2、ID3、ID13、ID23、ID33,其中包含多个ID。我的目标是检查哪些行包含某些值(本例中的值以531或532或533或534开头),并将这些值子集到新的数据集中

这段代码为所有行的数据子集,其中任何一列中的ID正好是531,但我不知道如何使其只检查从531开始的值,以及如何使其检查所有4个起始值:531、532、533和534(不使用更多的条件语句)

对于格式设置,我深表歉意(确实缺少一些数据点)


感谢虽然您的问题有点不清楚(我不确定在此之后您想对这些行执行什么操作..您可以使用
all
或至少一个使用
any
选择所有id列均为
TRUE
的行):

如果您想保留至少有1个
TRUE
的行(似乎是这样的,因为在代码段中您确实执行了
|
),那么您可以简单地执行

dt[dt2[,rowSums(.SD)>=1]]
#   id1 id2 id3
#1: 528 529 532
#2: 532 531 534
#3: 535 530 530
#4: 534 525 533
#5: 531 534 528
#6: 525 526 531
#7: 527 532 526
#8: 533 533 525
#9: 529 535 535

您想要一个数据集,该数据集只包含那些在所有三列中都包含其中一个值的行,还是至少包含一个值?我想我会使用
grepl
。建议包括样本数据和所需的输出。因此我只想将行保留在另一个较小的子集中,以便我可以计算和处理这些观察结果。我想保持原始的ID值。谢谢你的帮助。根据我的回答,不清楚你想保留哪一行
Sample Data                 
ID1     ID2     ID3     ID13    ID23    ID33
43645   38894   37338   45617   54419   42716
53123   24277   5323    29160       
22821   26091   46100   65324   22179   12367
        47946           59421   
                1954            9544
63534           53244           4771
59080   32532   41460   34562           15722
30542   11477   13211   11739           26753
29331           5311    7079    534424  5322

Desired Output                  
ID1     ID2     ID3     ID13    ID23    ID33
53123   24277   5323    29160       
63534           53244           4771
29331           5311    7079    534424  5322
require(data.table)
set.seed(123)
dt = data.table(id1 = sample(525:535), id2=sample(525:535), id3=sample(525:535))
dt2=dt[,lapply(.SD, FUN = function(z) {z >= 531})]
#      id1   id2   id3
# 1: FALSE FALSE  TRUE
# 2:  TRUE  TRUE  TRUE
# 3:  TRUE FALSE FALSE
# 4:  TRUE FALSE  TRUE
# 5:  TRUE  TRUE FALSE
# 6: FALSE FALSE  TRUE
# 7: FALSE  TRUE FALSE
# 8:  TRUE  TRUE FALSE
# 9: FALSE FALSE FALSE
#10: FALSE FALSE FALSE
#11: FALSE  TRUE  TRUE
dt[dt2[,rowSums(.SD)>=1]]
#   id1 id2 id3
#1: 528 529 532
#2: 532 531 534
#3: 535 530 530
#4: 534 525 533
#5: 531 534 528
#6: 525 526 531
#7: 527 532 526
#8: 533 533 525
#9: 529 535 535