我正在使用流行的R库“quantmod”,并且无法弄清楚当我将文件读取到csv时如何保留字符行名称。
例如,我将得到如下数据:
ROW NAME VALUE
1970-05-08 .05
1970-08-01 .05
1970-12-10 .06
... ---
当我使用
时write.csv(MyData,'MyData.csv', row.names = T)
输出如下:
Column One Column Two
1 .05
2 .05
3 .06
... ---
如何保留字符行名称?即如何将csv中的值1实际读作1970-05-08?
谢谢!
答案 0 :(得分:1)
您必须知道quantmod
会返回xts-objects
。所以第一列(日期)是索引。要将xts-objects
写入a,比如csv-file
,最简单的方法是使用write.zoo
函数。
getSymbols('AAPL',from='2018-01-01’)
write.zoo(AAPL,'aapl.csv',sep=',',quote=FALSE)
quotes=FALSE
删除列名称周围的引号。
答案 1 :(得分:0)
在将其作为.csv文件导出之前,您需要将所需的字符行名称存储为数据框中的新列。
要避免冗余列,请在write.csv()
功能中设置row.names = FALSE
。将数据框导回r时,请将read.csv()
中的row.names
设置为代表所需行名称值的列名称。
此处,行名称是一个字符,代表movie in which each Star Wars character dies。
# create data
df <-
data.frame( ID = 1:3
, Name = c( "Anakin", "Han", "Luke" )
, stringsAsFactors = FALSE
)
# create row names
rownames( df ) <- c( "Episode_VI", "Episode_VII", "Episode_VIII" )
# view data
df
# ID Name
# Episode_VI 1 Anakin
# Episode_VII 2 Han
# Episode_VIII 3 Luke
# store rownames in new column
df$row.names <- rownames( df )
# export data as CSV
write.csv( x = df
, row.names = FALSE
, file = "Star_Wars_data.csv"
)
# import data from CSV
df.csv <- read.csv( file = "Star_Wars_data.csv"
, header = TRUE
, row.names = "row.names"
, stringsAsFactors = FALSE
)
# view data from CSV
df.csv
# ID Name
# Episode_VI 1 Anakin
# Episode_VII 2 Han
# Episode_VIII 3 Luke
# end of script #
此外,您可以使用saveRDS()
将数据框导出为.rds文件。此方法不要求您将行名称存储为列;相反,它只是在使用r导入readRDS()
时保存。
# create data
df <-
data.frame( ID = 1:3
, Name = c( "Anakin", "Han", "Luke" )
, stringsAsFactors = FALSE
)
# create row names
rownames( df ) <- c( "Episode_VI", "Episode_VII", "Episode_VIII" )
# view data
df
# ID Name
# Episode_VI 1 Anakin
# Episode_VII 2 Han
# Episode_VIII 3 Luke
# Export as RDS file
saveRDS( object = df
, file = "Star_Wars_data.rds"
)
# view data
readRDS( file = "Star_Wars_data.rds" )
# ID Name
# Episode_VI 1 Anakin
# Episode_VII 2 Han
# Episode_VIII 3 Luke
# end of script #