Я импортирую большой набор данных в R и любопытно, есть ли способ быстро пройти через столбцы и определить, имеет ли столбец категориальные значения, числовые данные, дату и т. Д. Когда я использую str(df)
или class(df)
, столбцы в основном возвращаются неправильно.Определить категориальные переменные при импорте набора данных в R
Например, некоторые столбцы помечены как числовые, но в столбце имеется только 10 уникальных значений (от 1 до 10), что указывает на то, что это действительно должно быть фактором. Существуют и другие столбцы, которые имеют только 11 уникальных значений, представляющих рейтинг, от 0 до 5 с шагом 0,5. Другая колонка имеет коды стран (172 значения), которые варьируются от 1-230.
Есть ли способ быстро определить, является ли столбец фактором, не проходя через каждый из столбцов, чтобы понять природу переменной? (в наборе данных имеется много столбцов)
Спасибо!
В данный момент я использую вариации следующего кода, чтобы поймать первые два случая:
as.numeric(df[,51]) #convert the column to numeric
len = length(unique(df[,51])) #find number of unique values
diff = max(df[,51]) - min(df[,51]) #calculate difference between min and max
ord = (len - 1)/diff # calculate the increment if equally spaced
#subtract the max value from second to max value to find the actual increment (only uses last two values)
step = sort(unique(df[,51]),partial=len)[len] -
sort(unique(df[,51]),partial=len-1)[len-1]
ord == step #check if the last increment equals the implied increment
Тем не менее, этот подход предполагает, что каждая из переменных одинаково разнесенных (для пример, увеличивается на 0,5) и проверяет только пробел между двумя последними значениями. Это не поймало бы столбец, содержащий c (1,2,3,5,4,5,5,6), который имеет 6 уникальных значений, но неравномерное расстояние посередине (не то, что это распространено в моем наборе данных).
отзывчивостью, но нет никакого реального среза в наборе данных между цифровым/фактором, поэтому я работаю с изменением коды, публикуемым в вопросе попытаться определить факторы другим способом –