在 R 中读取 CSV,但保留字符行名称
Read CSV in R, but Keep Character Row Names
我使用的是流行的 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
... ---
如何保留字符行名称? IE。 csv 中的值 1 如何实际读取为 1970-05-08?
谢谢!
概览
在将其导出为 .csv 文件之前,您需要将所需的字符行名称存储为数据框中的新列。
为避免冗余列,将 write.csv()
function. When importing the data frame back into r, set row.names
in read.csv()
内的 row.names = FALSE
设置为代表所需行名称值的列的名称。
可重现的例子
这里的行名是一个字符,代表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()
to export your data frame as an .rds file. This method does not require you to store the row names as a column; rather, it simply saves is when importing into r using 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 #
你必须知道 quantmod
returns 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
删除列名两边的引号。
我使用的是流行的 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
... ---
如何保留字符行名称? IE。 csv 中的值 1 如何实际读取为 1970-05-08?
谢谢!
概览
在将其导出为 .csv 文件之前,您需要将所需的字符行名称存储为数据框中的新列。
为避免冗余列,将 write.csv()
function. When importing the data frame back into r, set row.names
in read.csv()
内的 row.names = FALSE
设置为代表所需行名称值的列的名称。
可重现的例子
这里的行名是一个字符,代表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()
to export your data frame as an .rds file. This method does not require you to store the row names as a column; rather, it simply saves is when importing into r using 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 #
你必须知道 quantmod
returns 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
删除列名两边的引号。