通过单个单元格中存在多个值来对数据进行子集化
Subset data by presence of multiple values in a single cell
这是一个令人尴尬的简单问题,但我真的被卡住了,none 的其他线程似乎解决了这个问题。
我有一个包含 20,000 多行的数据集,其中一列包含多个代码,用于解释个人符合的人口统计标准。
数据:
ORGNAME
D_CODE
A
~001, ~002
A
~001
B
~003, ~004
B
~001, ~005
B
~002, ~004
C
~001
我想对数据进行子集化,由此我只保留包含 ~001 的行,但我希望这包括还包含其他值的行(即具有 ~001 和 ~002 的第 1 行)。
我曾尝试使用 %>%
、filter
、subset
等,但尽管它们 select ~001 行,但它们也删除了具有 ~001 和额外的代码,所以使用上面的示例数据,我最终没有得到 4 行,而是只有 2 行。
有什么解决办法吗?非常感谢!
这个有用吗:
library(dplyr)
library(stringr)
df %>% filter(str_detect(D_CODE, '001'))
ORGNAME D_CODE
1 A ~001, ~002
2 A ~001
3 B ~001, ~005
4 C ~001
Data used:
df
ORGNAME D_CODE
1 A ~001, ~002
2 A ~001
3 B ~003, ~004
4 B ~001, ~005
5 B ~002, ~004
6 C ~001
将 base R
与 grepl
结合使用
subset(df, grepl('001', D_CODE))
这是一个令人尴尬的简单问题,但我真的被卡住了,none 的其他线程似乎解决了这个问题。
我有一个包含 20,000 多行的数据集,其中一列包含多个代码,用于解释个人符合的人口统计标准。
数据:
ORGNAME | D_CODE |
---|---|
A | ~001, ~002 |
A | ~001 |
B | ~003, ~004 |
B | ~001, ~005 |
B | ~002, ~004 |
C | ~001 |
我想对数据进行子集化,由此我只保留包含 ~001 的行,但我希望这包括还包含其他值的行(即具有 ~001 和 ~002 的第 1 行)。
我曾尝试使用 %>%
、filter
、subset
等,但尽管它们 select ~001 行,但它们也删除了具有 ~001 和额外的代码,所以使用上面的示例数据,我最终没有得到 4 行,而是只有 2 行。
有什么解决办法吗?非常感谢!
这个有用吗:
library(dplyr)
library(stringr)
df %>% filter(str_detect(D_CODE, '001'))
ORGNAME D_CODE
1 A ~001, ~002
2 A ~001
3 B ~001, ~005
4 C ~001
Data used:
df
ORGNAME D_CODE
1 A ~001, ~002
2 A ~001
3 B ~003, ~004
4 B ~001, ~005
5 B ~002, ~004
6 C ~001
将 base R
与 grepl
subset(df, grepl('001', D_CODE))