选择在R中包含值的变量

选择在R中包含值的变量,r,filter,R,Filter,如果这个问题已经得到回答,我很抱歉。我已经找了很久了 我对数据进行了编码,它的前缀是字母,后缀是数字。 例: 我需要镜像此SAS代码的R代码: Proc SQL; Create table NEW as Select * From DATA Where VAR contains 'D'; Quit; 编辑 对不起,我是新来的!(同样,R最多也算一般。)我认为发布SAS/SQL代码将有助于简化 无论如何,这些数据都是制造业数据。我有一个变量,它的值是A01…A99,等等 (粗略)数据帧示例: O

如果这个问题已经得到回答,我很抱歉。我已经找了很久了

我对数据进行了编码,它的前缀是字母,后缀是数字。 例:

我需要镜像此SAS代码的R代码:

Proc SQL;
Create table NEW as
Select *
From DATA
Where VAR contains 'D';
Quit;
编辑

对不起,我是新来的!(同样,R最多也算一般。)我认为发布SAS/SQL代码将有助于简化

无论如何,这些数据都是制造业数据。我有一个变量,它的值是A01…A99,等等

(粗略)数据帧示例:

OBS产品价格工厂

1部电话8.55 A87

2纸张105.97 X67

3.59 D24

4监视器98.65 D99


数据的规模是巨大的,我只想关注来自工厂“D”的观察结果,所以我试图根据包含(或以“D”开头)的“工厂”变量对数据进行子集。我知道如何使用特定值(即==、>=、!=)过滤数据。我只是想不出当只有部分值是已知的,并且我还没有找到关于R中的“contains”操作符的任何信息时该怎么做。我希望这能更清楚地说明问题

假设
DATA
是您的DATA.frame,
VAR
是您的列值

DATA <- data.frame(
    VAR=apply(expand.grid(LETTERS[1:4], 1:3), 1, paste0, collapse=""),
    VAL = runif(3*4)
)

与MrFlick的解决方案相比,还有一个小小的替代方案:使用行索引向量:

DATA[grep('D', DATA$VAR), ]

   VAR        VAL
4   D1 0.31001091
8   D2 0.71562382
12  D3 0.00981055
我们定义了:

DATA <- data.frame(
    VAR=apply(expand.grid(LETTERS[1:4], 1:3), 1, paste0, collapse=""),
    VAL = runif(3*4)
)

数据欢迎使用堆栈溢出!您的问题可以通过一些编辑来改进。首先,请阅读如何共享一些样本数据,以使您的问题具有可复制性。此外,请用文字解释,而不是SAS代码,说明您正在尝试做什么。这将使我们这些不懂SAS的人更容易回答。我猜您正在尝试为字符串是否包含字符“D”创建一个二进制变量,但如果是这样的话,您应该将其显式化。
NEW
DATA[grep('D', DATA$VAR), ]

   VAR        VAL
4   D1 0.31001091
8   D2 0.71562382
12  D3 0.00981055
DATA <- data.frame(
    VAR=apply(expand.grid(LETTERS[1:4], 1:3), 1, paste0, collapse=""),
    VAL = runif(3*4)
)