R Сортировка данных из нескольких столбцов - PullRequest
1 голос
/ 30 января 2012

У меня особая проблема с сортировкой следующего фрейма данных (sds45) в столбце stat0;

>sds45

           icntr     iexpt angle overlap Specified.Shot.Width          V6 mcsp             stat0
DD.Sigma2      3   1R50_50    45       0                   50 rectangular  1.5  3.62075986666667
DD.Sigma5      6   1R50_35    45      15                   50 rectangular  1.5  1.07005992333333
DD.Sigma8      9   1R50_40    45      10                   50 rectangular  1.5        1.36916201
DD.Sigma11    12   1R50_30    45      20                   50 rectangular  1.5 0.951408239333333
DD.Sigma14    15  1R100_75    45      25                  100 rectangular  1.5  11.6972803333333
DD.Sigma17    18  1R100_80    45      20                  100 rectangular  1.5  13.4350596666667
DD.Sigma20    21  1R100_90    45      10                  100 rectangular  1.5         16.654366
DD.Sigma31    32 1R100_150    45      50                  100 rectangular  1.5  2.19166406666667
DD.Sigma34    35 1R100_160    45      40                  100 rectangular  1.5         5.4822418
DD.Sigma39    40  1C200_25    45      75                  100    circular  1.5       0.704197414
DD.Sigma42    43  1C200_50    45      50                  100    circular  1.5  1.03405964333333
DD.Sigma45    46  1C200_75    45      25                  100    circular  1.5  7.03481966666667
DD.Sigma48    49  1C200_80    45      20                  100    circular  1.5  9.19375816666667

Мой первый подход был такой:

test<-sds45[order(sds45$stat0),]

... который ничего не сделал.

Я тоже пробовал это:

test=orderBy(~stat0, data=sds45)

У меня должна быть проблема с основной концепцией. Я был бы признателен за небольшую информацию об этом.

1 Ответ

3 голосов
/ 30 января 2012

Когда был создан фрейм данных, вероятно, в stat0 было несколько нечисловых символов, поэтому столбец был преобразован в фактор.Когда вы сортируете по фактору, вы сортируете по базовым уровням кодов, которые будут присваиваться в порядке появления этих значений, поэтому порядок не меняется.

Решение состоит в том, чтобы преобразоватьэтот столбец должен быть числовым.

Вы можете преобразовать этот коэффициент в числовой, как вы и предполагали, используя:

factor_to_numeric <- function(f)
{
  as.numeric(levels(f))[as.integer(f)]
}

sds45$stat0 <- factor_to_numeric(sds45$stat0)

Это также также хорошоИдея очень важно проверить ваш набор данных, чтобы попытаться найти эти нечисловые символы.Если этот столбец содержит грязные данные, остальная часть вашего набора данных также может нуждаться в очистке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...