如何创建一个rownames变量?

时间:2012-07-11 07:13:53

标签: r

我在R中有一个看起来像这样的对象:

                 returns   
2010-1-4    -0.015933327              
2010-1-11   -0.015042868    
2010-1-18    0.005350297  
2010-1-25   -0.049324703    
2010-2-1    -0.052674121  

我想进入:

        date       returns             
1 2010-01-04 -0.0159333272          
2 2010-01-11 -0.0150428685        
3 2010-01-18  0.0053502965        
4 2010-01-25 -0.0493247026       
5 2010-02-01 -0.0526741206        

我该怎么做?

3 个答案:

答案 0 :(得分:21)

根据数据集的rownames创建一个新列:

# Read in your example data
DF = read.table(header=TRUE, text=" returns
2010-1-4 -0.015933327
2010-1-11 -0.015042868
2010-1-18 0.005350297
2010-1-25 -0.049324703
2010-2-1 -0.052674121")
DF
#                returns
# 2010-1-4  -0.015933327
# 2010-1-11 -0.015042868
# 2010-1-18  0.005350297
# 2010-1-25 -0.049324703
# 2010-2-1  -0.052674121

# Create a `date` variable
DF$date = rownames(DF)
# Reset the `rownames` of your original data
rownames(DF) = NULL
# Format the `date` variable properly
DF$date = strptime(DF$date, "%Y-%m-%d")
DF
#        returns       date
# 1 -0.015933327 2010-01-04
# 2 -0.015042868 2010-01-11
# 3  0.005350297 2010-01-18
# 4 -0.049324703 2010-01-25
# 5 -0.052674121 2010-02-01

答案 1 :(得分:2)

相当模糊的问题。但是,例如,您可以使用

重命名列
colnames(data) <- c('date','returns')

如果您需要带序列编号的第一列,请尝试以下操作:

data <- cbind(1:nrow(data), data)

如果您只需要行号:

row.names(data) <- 1:nrow(data)

答案 2 :(得分:0)

您可以这样做:

date <- t(as.data.frame(strsplit(as.character(weekly.returns),split=" ")))[,1]
returns <- t(as.data.frame(strsplit(as.character(weekly.returns),split=" ")))[,2]

data.frame(日期,返回,row.names = NULL) 它会给你这个:

        date     returns
1 2010-01-08 -0.07830343
2 2010-01-15 -0.05176991
3 2010-01-22  0.07699487
4 2010-01-29 -0.05979203
5 2010-02-01 -0.02119816