DataTable 通过在列中从左到右读取来对数字进行排序
DataTable sorts number by reading left to right in a column
使用数据表时,数字是从左到右而不是从右到左排序的。我也将它转换为数字。为什么要这样做?查看 * 数字
它对所有列都一样。
举个例子: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)
)
在您的函数 delt
中,paste0
返回一个字符向量,因此该列可能正在转换为字符。
如果数值被错误地存储为字符向量,上面的排序行为与数值的排序方式一致。 96.6 > 955 > 94 等
使用 str(data)
并确保 Change.RN
列实际上是一个数字。如果没有,用as.numeric
转换。
使用数据表时,数字是从左到右而不是从右到左排序的。我也将它转换为数字。为什么要这样做?查看 * 数字 它对所有列都一样。
举个例子: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)
)
在您的函数 delt
中,paste0
返回一个字符向量,因此该列可能正在转换为字符。
如果数值被错误地存储为字符向量,上面的排序行为与数值的排序方式一致。 96.6 > 955 > 94 等
使用 str(data)
并确保 Change.RN
列实际上是一个数字。如果没有,用as.numeric
转换。