2014-04-12 2 views
3

Как выбрать только строки, содержащие номер в столбце 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 

Вывод должен выглядеть следующим образом:

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

ответ

2

Вы можете использовать grep:

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

Это должно быть быстрее (он не использует регулярное выражение)

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

Вы правы, ваше решение быстрее, но оно вызывает предупреждение: 'as.numeric (" a ")' и не работает, когда столбец содержит 'factor'' as.numeric (factor (" a "))' (как в этом примере, поскольку 'stringsAsFactors = FALSE' отсутствует) , – sgibb

Смежные вопросы