R:过滤掉数据框中的非数值

kur*_*dtc 4 csv r dataframe

我有来自 .csv 文件的以下数据框,其中包含更多行,但为了保持简单,我将其范围缩小到这三行。您还可以在此处访问 csv 文件:https ://dl.dropboxusercontent.com/u/16277659/filter.csv

NAME;       YEAR;   VALUE
SAMPLE1;    1969;   6
SAMPLE1;    1970;   -6
SAMPLE1;    1971;   -7
SAMPLE1;    1972;   =-X
SAMPLE1;    1972;   ST
SAMPLE1;    1972;   3
SAMPLE1;    1975;   -7
SAMPLE1;    1976;   3
SAMPLE1;    1977;   3
SAMPLE1;    1978;   0
SAMPLE2;    1991;   -15
SAMPLE2;    1992;   =X
SAMPLE2;    1992;   -58
SAMPLE2;    1994;   -40
Run Code Online (Sandbox Code Playgroud)

我想做的是:有时我有定性值(如 =-X、ST 等),我不一定想放弃这些值,但如果同年有一个数值(在 SAMPLE1 1972 = -X 和 ST),我想只保留数值并删除其他值。

你会怎么做?感谢您的帮助。

Adr*_*ian 7

我还没有掌握正则表达式,所以我首先想到的是:

dat <- read.csv2("filter.csv", as.is=TRUE)
dat$IsNum <- !(is.na(as.numeric(dat$VALUE)))

> dat
      NAME YEAR VALUE IsNum
1  SAMPLE1 1969     6  TRUE
2  SAMPLE1 1970    -6  TRUE
3  SAMPLE1 1971    -7  TRUE
4  SAMPLE1 1972   =-X FALSE
5  SAMPLE1 1972    ST FALSE
6  SAMPLE1 1972     3  TRUE
7  SAMPLE1 1975    -7  TRUE
8  SAMPLE1 1976     3  TRUE
9  SAMPLE1 1977     3  TRUE
10 SAMPLE1 1978     0  TRUE
11 SAMPLE2 1991   -15  TRUE
12 SAMPLE2 1992    =X FALSE
13 SAMPLE2 1992   -58  TRUE
14 SAMPLE2 1994   -40  TRUE
Run Code Online (Sandbox Code Playgroud)

从这里开始,检查是否是一个简单的问题IsNum == TRUE