我是R的新手,目前正试图摆脱对excel的依赖。我有一个要清理的文件,清理过程的最后一步是按标题值对列进行排序。标头包含以下值:
“ 2019年8月”,“ 2019年10月”,“ 2020年2月”,“ 2020年3月”,“ 6月” 2019“,2019年7月等,......”
我无法确切地说出可能存在多少列,因为每个文件的不同。
如您所见,它们并不是按任何特定顺序排列的。有没有一种方法可以按升序组织列?任何指导将不胜感激。
答案 0 :(得分:0)
一种选择是将列名称转换为日期,然后//REGISTER.PHP
// Prepare an insert statement
$sql = "INSERT INTO users (username, password) VALUES (?, ?)";
if($stmt = mysqli_prepare($conn, $sql)){
// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "ss", $param_username, $param_password);
$param_username = $username;
$param_password = $password;
// Creates a password hash
//LOGIN.PHP
// Bind result variables
mysqli_stmt_bind_result($stmt, $id, $username, $db_password);
//COMPARE FORM PASSWORD and PASSWORD FROM DB
if($password == $db_password)) {
...
order
添加可复制的示例
df[order(as.Date(paste0("01.", names(df)), "%d.%B.%Y"))]
看起来像这样
df <- structure(list(August.2019 = c(1L, 5L), October.2019 = 2:3,
February.2020 = 3:2, March.2020 = c(4L, 1L), June.2019. = c(5L, 2L),
July.2019 = c(6L,1L)), class = "data.frame", row.names = c(NA, -2L))
我们可以使用将df
# August.2019 October.2019 February.2020 March.2020 June.2019. July.2019
#1 1 2 3 4 5 6
#2 5 3 2 1 2 1
df[order(as.Date(paste0("01.", names(df)), "%d.%B.%Y"))]
# June.2019. July.2019 August.2019 October.2019 February.2020 March.2020
#1 5 6 1 2 3 4
#2 2 1 5 3 2 1
/ lubridate
或anytime
中的其他软件包中的功能转换为日期的相同逻辑。
答案 1 :(得分:0)
我们可以使用setcolorder
中的data.table
library(zoo)
library(data.table)
setcolorder(df, order(as.yearmon(names(df), "%b.%Y")))
df
# June.2019. July.2019 August.2019 October.2019 February.2020 March.2020
#1 5 6 1 2 3 4
#2 2 1 5 3 2 1
df <- structure(list(August.2019 = c(1L, 5L), October.2019 = 2:3,
February.2020 = 3:2, March.2020 = c(4L, 1L), June.2019. = c(5L, 2L),
July.2019 = c(6L,1L)), class = "data.frame", row.names = c(NA, -2L))