我尝试了两种方法来按列值对数据框进行排序:
dateCol = "DATE"
df <- data.frame( DATE = c("01-10-2020","01-04-2020","01-06-2020","01-02-2020"),
VAL = c(3,7,4,5))
# Method 1
df <- df[order(df[dateCol]),]
# Method 2
df <- df[order(df[which(colnames(df)==dateCol)]),]
并且它们都触发相同的警告消息:
Warning messages:
1: In xtfrm.data.frame(x) : cannot xtfrm data frames
2: In xtfrm.data.frame(x) : cannot xtfrm data frames
如何避免这种情况?
1条答案
按热度按时间omhiaaxx1#
这里有一些替代方案.都使用在(1)中定义的
fmt
。1)Base R日期格式不明确,但请选择下面的
fmt
值之一。然后选择所需的列,将其转换为Date类,找到将对其进行排序的索引,然后应用这些索引。2)zoo另一种可能性是将其转换为zoo对象,然后再转换回来。转换过程会自动对其进行排序并将其转换为Date类。如果zoo对象作为结果是正确的,则忽略最后一行。
3)dplyr我们可以转换日期,然后使用arrange进行排序。