嗨,我有一个奇怪的问题。在尝试订购数据框时,我的行数减少了。请参阅以下内容:
> dim(y_data)
[1] 81 3
> y_data <- y_data[order(Date),]
> dim(y_data)
[1] 55 3
> class(y_data)
[1] "tbl_df" "tbl" "data.frame"
>
你能指导我吗?
答案 0 :(得分:2)
对象Date
的维度是多少?您的代码中发生的事情是您在名为Date
的对象上运行订单,而不是按预期在y_data$Date
上运行。您可以像@akrun建议的那样使用tidyverse
方法,也可以正确指定要订购的对象:
y_data <- y_data[order(y_data$Date),]
当您使用基本[]
表示法时,它不知道Date
引用y_data
中的列。它只是在环境中查找名为Date
的对象并使用它。您需要使用y_data$Date
表示法明确指明您正在寻找$
。
答案 1 :(得分:0)
由于它是tbl_df
,我们可以根据“日期”使用tidyverse
方法arrange
行。
library(tidyr)
out <- y_data %>%
arrange(Date)
在OP的代码中,
y_data[order(Date),]
如果没有对象'Date',则上述代码将导致错误。由于没有错误,它强烈建议已经创建了该对象。
如果在全局环境中创建的'Date'对象与用于创建'y_data'的对象相同,那么它应该有效。根据显示的尺寸,情况并非如此。在这里,我们可以使用$
或[[
y_data[order(y_data$Date),]