我正在处理一个大型数据表(~ 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。
1条答案
按热度按时间hjzp0vay1#
我们可以将
filter
与%in%
和if_any
一起使用