2016-09-16 3 views
-3

При использовании данных datatable номера сортируются, читаются слева направо, а не справа налево. Я также преобразовал его в числовой. Почему он это делает? См. * Номера Он делает то же самое со всеми столбцами.DataTable сортирует число, считывая слева направо в столбце

Вот пример: 950 должен быть первым, а не 96,67

Items RN.2015 RN.2016 Change.RN 
London 30  59  **96.67** 
Tokyo 2  21  **950** 
Paris 2  21  950 
Seoul 2  21  950 
New York20  39  95 
Orlando 18  35  94.44 
Nice 3  31  **933.3** 

код в реакционно:

library(dplyr) 
fileInfo$RN <- as.numeric(as.character(fileInfo$RN)) 
perChange<-fileInfo %>% 
group_by_(input$selCol) %>% 
    summarise( 
     RN.2015 = sum(RN[Year=="2015"]), 
     RN.2016 = sum(RN[Year=="2016"]) 
    )%>% 
    mutate(
     Change.RN = delt(RN.2015,RN.2016) 
) 

функция

delt <- function(x,y) {ifelse(is.finite((y-x)/x*100),paste0(formatC((y-x)/x*100),"%"),"")} 

данные:

Data <- data.frame(
    Items = c("London","Tokyo","Paris","Seoul","New York","Orlando","Nice"), 
    RN.2015 = c(30,2,2,2,20,18,3), 
    RN.2016 = c(59,21,21,21,39,35,31) 
) 
+2

[Как сделать отличный пример воспроизводимого R?] (Http://stackoverflow.com/questions/5963269) – zx8754

+0

Код и вложенные данные ввода текста не совпадают. – zx8754

+0

спасибо за downvoting @ zx8754 – JamAndJammies

ответ

1

В вашей функции delt, paste0 возвращает вектор символов, поэтому столбец, вероятно, преобразуется в символ.

Выполнение сортировки выше соответствует способу сортировки числового значения, если оно было неправильно сохранено в виде символьного вектора. 96.6> 955> 94 и т. Д.

Используйте str(data) и убедитесь, что столбец Change.RN на самом деле является числовым. Если нет, используйте as.numeric для преобразования.

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