R语言 在多列中搜索4个特定值时对行进行子集化

prdp8dxp  于 2023-02-26  发布在  其他
关注(0)|答案(1)|浏览(133)

我正在处理一个大型数据表(~ 1 '000'000 x 700),我想根据跨多个列的4个特定值对行进行子集化。
由于我是一个初学者的R-用户,我需要帮助来实现这一点。
数据表如下所示:
[Excel中的虚构DT,粗体值/变量是相关值/变量] x1c 0d1x

**我要找的是一个“快速”代码,它将包含值“X21”或“X22”或“X230”或“X231”的每一行划分为子集(但不是任何其他Xyza值)以“_7_2_Y”开始并以零结束的任何列中(0)(50个变量,满足这些标准)。**子集化的行仍然应该包含每个变量(但我认为应该是这样)。

子集化的数据最终应该只包含相关的行(并且足够小,以便进一步的数据操作)。
我尝试了这里读到的几样东西,但都没有成功(或者没有理解它是如何工作的)。
使用以下项手动子集化:

SubX <- subset(fulldata, 
            _7_2_Y10== X21 | _7_2_Y10== X22| _7_2_Y10== X230 | _7_2_Y10== X231|
            _7_2_Y20== X21 | _7_2_Y20== X22| _7_2_Y20== X230 | _7_2_Y20== X231|
            _7_2_Y30== X21 | _7_2_Y30== X22| _7_2_Y30== X230 | _7_2_Y30== X231|
            )

会很痛苦。
我被告知使用data.table(用于快速子集化/过滤),但它似乎对多列子集化行有限制。可能需要中间步骤,但我真的不知道如何操作。
(我不知道如何使用grep(),因为有一个值“X27”,我不需要它。)
我希望我的例子对你有足够的帮助。提前谢谢你,L。

hjzp0vay

hjzp0vay1#

我们可以将filter%in%if_any一起使用

library(dplyr)
fulldata %>%
    filter(if_any(c(`_7_2_Y10`, `_7_2_Y20`, `_7_2_Y30`), ~ .x %in%
       c("X21", "X22", "X230", "X231")))

相关问题