R 按日期和字符串值对数据帧进行排序
我从彭博社下载数据,然后在R中更新。数据框如下所示R 按日期和字符串值对数据帧进行排序,r,sorting,dataframe,R,Sorting,Dataframe,我从彭博社下载数据,然后在R中更新。数据框如下所示 ticker date PX_LAST PE_RATIO 1 SMI Index 2014-09-30 8835.14 20.3692 2 SMI Index 2014-10-31 8837.78 20.3753 3 DAX Index 2014-09-30 9474.30 16.6487 4 DAX Index 2014-10-31 9326.87 16.3896 5 SMI Index 2014-11-28 9150.
ticker date PX_LAST PE_RATIO
1 SMI Index 2014-09-30 8835.14 20.3692
2 SMI Index 2014-10-31 8837.78 20.3753
3 DAX Index 2014-09-30 9474.30 16.6487
4 DAX Index 2014-10-31 9326.87 16.3896
5 SMI Index 2014-11-28 9150.46 21.0962
6 SMI Index 2014-12-31 8983.37 20.6990
7 DAX Index 2014-11-28 9980.85 17.5388
8 DAX Index 2014-12-31 9805.55 16.8639
现在,我想让这个数据帧按照股票代码(不是按字母顺序,而是按股票代码的顺序)和日期排序,这样最终结果将是:
ticker date PX_LAST PE_RATIO
1 SMI Index 2014-09-30 8835.14 20.3692
2 SMI Index 2014-10-31 8837.78 20.3753
3 SMI Index 2014-11-28 9150.46 21.0962
4 SMI Index 2014-12-31 8983.37 20.6990
5 DAX Index 2014-09-30 9474.30 16.6487
6 DAX Index 2014-10-31 9326.87 16.3896
7 DAX Index 2014-11-28 9980.85 17.5388
8 DAX Index 2014-12-31 9805.55 16.8639
您可以尝试订购
df$ticker <- factor(df$ticker, levels=unique(df$ticker))
df1 <- df[with(df, order(ticker, date)),]
row.names(df1) <- NULL
df1
# ticker date PX_LAST PE_RATIO
#1 SMI Index 2014-09-30 8835.14 20.3692
#2 SMI Index 2014-10-31 8837.78 20.3753
#3 SMI Index 2014-11-28 9150.46 21.0962
#4 SMI Index 2014-12-31 8983.37 20.6990
#5 DAX Index 2014-09-30 9474.30 16.6487
#6 DAX Index 2014-10-31 9326.87 16.3896
#7 DAX Index 2014-11-28 9980.85 17.5388
#8 DAX Index 2014-12-31 9805.55 16.8639
df$ticker您可以尝试order
df$ticker <- factor(df$ticker, levels=unique(df$ticker))
df1 <- df[with(df, order(ticker, date)),]
row.names(df1) <- NULL
df1
# ticker date PX_LAST PE_RATIO
#1 SMI Index 2014-09-30 8835.14 20.3692
#2 SMI Index 2014-10-31 8837.78 20.3753
#3 SMI Index 2014-11-28 9150.46 21.0962
#4 SMI Index 2014-12-31 8983.37 20.6990
#5 DAX Index 2014-09-30 9474.30 16.6487
#6 DAX Index 2014-10-31 9326.87 16.3896
#7 DAX Index 2014-11-28 9980.85 17.5388
#8 DAX Index 2014-12-31 9805.55 16.8639
df$ticker在data.table
包中有一个函数chgroup()
,它完全满足您的需求。它将向量中的值分组在一起,同时保留初始顺序。它仅适用于字符向量(ch
for character)
如果您的ticker
列是factor
,则首先将其转换为字符
类型。在数据表
包中有一个函数chgroup()
。它将向量中的值分组在一起,同时保留初始顺序。它仅适用于字符向量(ch
for character)
如果您的ticker
列为factor
,则首先将其转换为字符类型