我在第1列中的格式为mm / yyyy,然后在第2列中生成。
我如何按月订购,以便从第一个月(11月1日)开始到结束(05/2018)。
我已经尝试了几个订单,但似乎没有按年订购,然后按月订购
答案 0 :(得分:3)
在tidyverse(添加了lubridate):
public function getTokenValue() {
$admin = Admin::first();
$client = new \GuzzleHttp\Client();
$token_uri = env('TOKEN_BALANCE_ENDPOINT');
$token_uri = str_replace("||contractaddress||",$admin->contract_address, $token_uri );
$token_uri = str_replace("||address||",$admin->ether, $token_uri );
$token = $client->request('GET',$token_uri);
return json_decode($token->getBody())->result;
}
使用数据:
library(tidyverse)
library(lubridate)
dfYrMon <-
df1 %>%
mutate(date = parse_date_time(month, "my"),
year = year(date),
month = month(date)
) %>%
arrange(year, month) %>%
select(date, year, month, result)
将为您提供这个'数据帧':
df1 <- tibble(month = c("01/2018", "02/2018", "03/2018", "04/2018", "05/2018", "11/2017", "12/2017"), result = c(96.13636, 96.4, 94, 97.92857, 95.75, 98.66667, 97.78947))
使您的数据值成为原子(年份在其自己的列中,月份在其自己的列中)通常会提高操作的便利性。
或者如果您想使用基本R日期操作而不是 lubridate :
# A tibble: 7 x 4
date year month result
<dttm> <dbl> <dbl> <dbl>
1 2017-11-01 2017 11 98.66667
2 2017-12-01 2017 12 97.78947
3 2018-01-01 2018 1 96.13636
4 2018-02-01 2018 2 96.40000
5 2018-03-01 2018 3 94.00000
6 2018-04-01 2018 4 97.92857
7 2018-05-01 2018 5 95.75000
请注意创建的数据类型。
library(tidyverse) dfYrMon_base <- df1 %>% mutate(date = as.Date(paste("01/", month, sep = ""), "%d/%m/%Y"), year = format(as.Date(date, format="%d/%m/%Y"),"%Y"), month = format(as.Date(date, format="%d/%m/%Y"),"%m") ) %>% arrange(year, month) %>% select(date, year, month, result) dfYrMon_base
答案 1 :(得分:2)
我们可以将其转换为yearmon
类,然后执行order
library(zoo)
out <- df1[order(as.yearmon(df1$month, "%m/%Y"), df1$Result),]
row.names(out) <- NULL
out
# month Result
#1 11/2017 98.66667
#2 12/2017 97.78947
#3 01/2018 96.13636
#4 02/2018 96.40000
#5 03/2018 94.00000
#6 04/2018 97.92857
#7 05/2018 95.75000
df1 <- structure(list(month = c("01/2018", "02/2018", "03/2018", "04/2018",
"05/2018", "11/2017", "12/2017"), Result = c(96.13636, 96.4,
94, 97.92857, 95.75, 98.66667, 97.78947)), .Names = c("month",
"Result"), class = "data.frame",
row.names = c("1", "2", "3",
"4", "5", "6", "7"))