cptn
cptn

Reputation: 703

Select rows of a data.frame that contain only numbers in a certain column

How to select only the rows that contain a number in column b.

a <- c(1,5,3,1,-8,6,-1)
b <- c(4,-2,1,0,"c",2,"DX")

df <- data.frame(a,b)
df

#    a  b
# 1  1  4
# 2  5 -2
# 3  3  1
# 4  1  0
# 5 -8  c
# 6  6  2
# 7 -1  DX

The output should look like this:

#    a  b
# 1  1  4
# 2  5 -2
# 3  3  1
# 4  1  0
# 5  6  2

Upvotes: 3

Views: 13038

Answers (2)

bartektartanus
bartektartanus

Reputation: 16080

This should be faster (it doesn't use regex)

df[!is.na(as.numeric(df$b)), ]

Upvotes: 6

sgibb
sgibb

Reputation: 25736

You could use grep:

df[grep("[[:digit:]]", df$b), ]
#  a  b
#1 1  4
#2 5 -2
#3 3  1
#4 1  0
#6 6  2

Upvotes: 4

Related Questions