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)
)
C8H10N4O2

在您的函数中deltpaste0返回一个字符向量,因此该列可能已转换为字符。

上面的排序行为与将数值错误地存储为字符向量时可以对数值进行排序的方式一致。96.6> 955> 94,依此类推。

使用str(data)并确保该列Change.RN实际上是数字。如果不是,请使用as.numeric进行转换。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章