2016-10-07 1 views
1

Я хотел бы выяснить, является ли каждое значение в моем столбце числовым значением или не численным значением.Проверьте, есть ли каждое значение в столбце строка или числовое значение

df = data.frame(help = c(456, 'superduper'), 
       correct_answer = c("numeric","string")) 

Я попытался is.numeric или is.character, на основе строка за строкой, но это не кажется, что работать весь столбец кодируется как символ.

Я знаю, что это основной вопрос, но любая помощь может быть использована.

+1

Вы можете проверить на возможность принуждать к цифровой, например, - 'is.na (as.numeric (as.character (df $ help)))' Почему вы комбинировали числовые и текстовые данные в первую очередь? – thelatemail

+0

Что не так с использованием 'is.numeric (df $ help)'? –

+0

@TimBiegeleisen - Я думаю, что дело в том, что есть числа и символьные строки, все закодированные в символьной переменной. – thelatemail

ответ

3

Моя первая мысль состояла в том, чтобы рассмотреть вопрос о том, может ли значение быть принуждено к числу. Например .:

is.na(as.numeric(as.character(df$help))) 
#[1] FALSE TRUE 

бонус в том, что это будет работать для вариаций числовых форматов, как 3, 3.2 или даже 3e5

+0

умный, мне нравится – runningbirds

+0

@runningbirds 'suppressWarnings' было бы полезно в этом случае – rawr

1

Один из вариантов здесь для проверки числовых строк будет заменить все цифры с пустой строкой, а затем проверить, если в результате длина будет равна нулю:

is.help.numeric <- nchar(gsub("\\d+(\\.\\d+)?", "", df$help) == 0) 

Если данная запись в help имеет хотя бы одну нецифры , то его соответствующая запись в is.help.numeric будет равна FALSE.

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