Как создать переменную из розеток?
У меня есть объект в 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
Как я могу это сделать?
Ответы
Ответ 1
Создайте новый столбец на основе 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
Ответ 2
Довольно нечеткий вопрос. Но, например, вы можете переименовать столбцы с помощью
colnames(data) <- c('date','returns')
Если вам нужен первый столбец с последовательной нумерацией, попробуйте следующее:
data <- cbind(1:nrow(data), data)
Если вам просто нужны номера строк:
row.names(data) <- 1:nrow(data)
Ответ 3
Вы можете просто сделать следующее:
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