我正在使用流行的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?
谢谢!
发布于 2018-02-20 09:32:02
您必须知道,quantmod
返回xts-objects
。因此,第一列(日期)是索引。比方说,要将xts-objects
写入csv-file
,最简单的方法是使用write.zoo
函数。
getSymbols('AAPL',from='2018-01-01’)
write.zoo(AAPL,'aapl.csv',sep=',',quote=FALSE)
quotes=FALSE
删除列名两边的引号。
发布于 2018-02-17 19:48:47
概述
在将数据框导出为.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 #
另存为RDS文件
此外,还可以使用saveRDS()
将数据框导出为.rds文件。此方法不要求您将行名存储为列;相反,在使用readRDS()
导入r时,它只需保存即可。
# 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 #
https://stackoverflow.com/questions/48843863
复制相似问题