由于R中的顺序而减少的行数

时间:2018-04-19 17:06:34

标签: r

嗨,我有一个奇怪的问题。在尝试订购数据框时,我的行数减少了。请参阅以下内容:

> 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"
> 

你能指导我吗?

2 个答案:

答案 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),]