选择R

时间:2015-06-04 21:09:14

标签: r filter

如果这个问题得到解答,我道歉。我已经搜索了太久了。

我编码的数据前缀为字母和数字后缀。 例如:

A01, A02,...A99 ### (for each letter A-Z)

我需要反映此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'的观察,所以我试图根据包含的'PLANT'变量对数据进行子集化(或者以'D'开头。我知道如何使用特定值过滤数据(即==,> =,!=等)。当只知道部分值时,我无法弄清楚如何做到这一点我还没有找到关于R中'contains'运算符的任何内容。我希望能更明确地澄清一些事情。

2 个答案:

答案 0 :(得分:1)

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

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

然后你可以做

subset(DATA, grepl("D", VAR))

答案 1 :(得分:0)

替代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)
)