2012-03-14 4 views
2

Если у меня есть файл с указанием (возраст, вес, город, город, высота), есть ли способ реструктурировать файл, чтобы все числовые данные eithier приходили первым или вторым, например (возраст, вес , высота, город, город) простым способом. Я хочу знать это, потому что у меня есть числовые и не числовые данные длиной около 10 столбцов и нужно нормализовать с помощью min/max только числовые поля, и это будет быстрее, если бы они были в одной половине моего набора данных, поэтому я могу просто использовать цикл , Извините, я новичок в R, и я использую его в mac os, если это важно.Рекреационные векторы в R

ответ

2

Построение образца data.frame:

dat <- data.frame(age=runif(10), weight=runif(10), city="New York", town="any", height=runif(10)) 

Вот как вы можете заказать колонки:

dat.ordered <- dat[,order(sapply(dat,is.numeric), decreasing=T)] 
0

Зачем переназначения столбцов, когда вы можете просто перебирает их и масштабировать числовой по мере необходимости?

dat <- data.frame(x1 = runif(10), 
        x2 = letters[1:10], 
        x3 = rnorm(10), 
        x4 = LETTERS[1:10]) 

data.frame(lapply(dat,function(x){if (is.numeric(x)) scale(x) else x})) 

Эквивалентный, хотя и несколько странно выглядящих, решения, используя некоторые удобные plyr функции:

require(plyr) 
colwise(function(x){if (is.numeric(x)) scale(x) else x})(dat) 

версии numcolwise и catcolwise также может быть какой-то интерес (хотя они возвращаются только те столбцы, они действуйте).

+0

спасибо за быстрые ответы, которые помогли –

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