сортировать столбцы данных в R с символами% в нем - PullRequest
0 голосов
/ 15 октября 2019

У меня есть небольшая таблица данных с символом% в именах столбцов. Для краткости я показываю только часть вывода.

thevars w1.2.5% w1.97.5%    w2.2.5% w2.97.5%    w3.2.5% w3.97.5%    mw.2.5% mw.97.5%
V10     0.043   0.06        0.019   0.023       0.09    0.114       0.054   0.062
V4      0.071   0.094       0.015   0.02        0.05    0.067       0.049   0.056
V5      0.028   0.039       0.072   0.095       0.03    0.044       0.048   0.054
V6      0.021   0.03        0.062   0.087       0.02    0.025       0.037   0.045
V7      0.079   0.103       0.016   0.021       0.071   0.096       0.061   0.068
V8      0.042   0.06        0.06    0.08        0.034   0.05        0.051   0.057
V9      0.016   0.021       0.092   0.121       0.021   0.029       0.045   0.054

Код, который я использовал при создании таблицы, приведен ниже.

data.frame(aggregate(DF[-1], list(DF[[1]]), quantile, probs = c(0.025, 0.975)), check.names=FALSE)

Я проверил структуру DF, и она показывает следующее (пример вывода).

 $ thevars: chr  "V10" "V4" "V5" "V6" ...
 $ w1     : num [1:7, 1:2] 0.043 0.071 0.028 0.021 0.079 0.042 0.016 0.06 0.094 0.039 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : NULL
  .. ..$ : chr  "2.5%" "97.5%"
 $ w2     : num [1:7, 1:2] 0.019 0.015 0.072 0.062 0.016 0.06 0.092 0.023 0.02 0.095 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : NULL
  .. ..$ : chr  "2.5%" "97.5%"
 $ w3     : num [1:7, 1:2] 0.09 0.05 0.03 0.02 0.071 0.034 0.021 0.114 0.067 0.044 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : NULL
  .. ..$ : chr  "2.5%" "97.5%"
 $ mw     : num [1:7, 1:2] 0.054 0.049 0.048 0.037 0.061 0.051 0.045 0.062 0.056 0.054 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : NULL

Я хочу отсортировать таблицу на основе одного из столбцов вв порядке убывания. Я пробовал разные вещи, но безрезультатно.

Когда я запустил следующий код, он показывает, что «w1.2.5%» отсутствует в имени столбца.

"w1.2.5%" %in% colnames(thetable)
[1] FALSE

Однако, когда я запустил приведенный ниже код, он показывает, что в имени столбца есть «w1».

"w1" %in% colnames(thetable)
[1] TRUE

У меня вопрос, как сортировать по заголовку столбца? Я попробовал все в ответе по этой ссылке ( Форматирование таблицы в R со специальными символами в столбцах ), и это не сработало.

1 Ответ

0 голосов
/ 15 октября 2019

Без предоставления DF Я не могу точно скопировать ваш фрейм данных. Тем не менее, я могу включить символ % в имя столбца:

data.frame("w1.2.5%" = 5, check.names = F)
> "w1.2.5%" %in% colnames(df)
[1] TRUE

Если символ % доставляет вам неприятности, возможно, вы могли бы (1) заменить символ, (2) проведите свои манипуляции, а затем 3 (3) замените символ:

colnames(df) <- gsub("%", "perc", colnames(df))
df$w1.2.5perc <- 10
colnames(df) <- gsub("perc", "%", colnames(df))
...