转换R中的.csv文件

时间:2016-05-03 00:16:40

标签: r csv

我有一个我在线下载的.csv文件:

financials.morningstar.com/ajax/exportKR2CSV.html?&t=AAPL

我正在尝试编辑电子表格,以便列名称是日期,行名称是其中提供的各种比率和索引。下面是我的代码,但列名和行名都不起作用。有什么建议吗?

read.csv('/path_to_csv.csv',header=F)[-c(1:2),-c(12)]->spreadsheet
spreadsheet_body<-spreadsheet[-1,-1]
colnames(spreadsheet_body)<-spreadsheet[1,-1]
rownames(spreadsheet_body)<-c()
rownames(spreadsheet_body)<-spreadsheet[-1,1]

3 个答案:

答案 0 :(得分:2)

这并不能解决所有问题,但您可以按部分尝试rownames

read.csv("http://financials.morningstar.com/ajax/exportKR2CSV.html?&t=AAPL",header=T,stringsAsFactors = F,skip = 2)[,-c(12)]->spreadsheet
#str(spreadsheet)
View(spreadsheet)

答案 1 :(得分:2)

您没有提供具体信息。当我运行你的代码时,我得到了

duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique values when setting 'row.names': ‘’, ‘10-Year Average’, ‘3-Year  Average’, ‘

我怀疑这是因为3年平均等名称出现在很多部分。

这是一种可能的方法(仅针对三个部分),这些方法很繁琐,但可以使后续处理更容易。

financials <- read.table('Downloads/AAPL Key Ratios.csv',sep=",",quote = '"', skip=3, nrow=15,
                         col.names=c('item', 'Y2006M09',    'Y2007M09',     'Y2008M09',     'Y2009M09', 'Y2010M09', 
                                     'Y2011M09',    'Y2012M09', 'Y2013M09', 'Y2014M09', 'Y2015M09', 'TTM'))
margins    <- read.table('Downloads/AAPL Key Ratios.csv',sep=",",quote = '"', skip=21, nrow=9,  
                         col.names=c('item', 'Y2006M09',    'Y2007M09',     'Y2008M09',     'Y2009M09', 'Y2010M09', 
                                     'Y2011M09',    'Y2012M09', 'Y2013M09', 'Y2014M09', 'Y2015M09', 'TTM'))
revenue_percent <- read.table('Downloads/AAPL Key Ratios.csv',sep=",",quote = '"', skip=44, nrow=4,  
                         col.names=c('item', 'Y2006M09',    'Y2007M09',     'Y2008M09',     'Y2009M09', 'Y2010M09', 
                                     'Y2011M09',    'Y2012M09', 'Y2013M09', 'Y2014M09', 'Y2015M09', 'TTM'))

答案 2 :(得分:2)

考虑简单地使用t()转置数据框,然后替换第一行的标头。下面使用URL中的AAPL csv文件:

#      Period Revenue USD Mil Gross Margin % Operating Income USD Mil
# 1  Y2006M09           19315           29.0                     2453
# 2  Y2007M09           24006           34.0                     4409
# 3  Y2008M09           32479           34.3                     6275
# 4  Y2009M09           42905           40.1                    11740
# 5  Y2010M09           65225           39.4                    18385
# 6  Y2011M09          108249           40.5                    33790
# 7  Y2012M09          156508           43.9                    55241
# 8  Y2013M09          170910           37.6                    48999
# 9  Y2014M09          182795           38.6                    52503
# 10 Y2015M09          233715           40.1                    71230
# 11      TTM          227535           39.8                    66864
#    Operating Margin % Net Income USD Mil Earnings Per Share USD
# 1                12.7               1989                   0.32
# 2                18.4               3496                   0.56
# 3                19.3               4834                   0.77
# 4                27.4               8235                   1.30
# 5                28.2              14013                   2.16
# 6                31.2              25922                   3.95
# 7                35.3              41733                   6.31
# 8                28.7              37037                   5.68
# 9                28.7              39510                   6.45
# 10               30.5              53394                   9.22
# 11               29.4              50678                   8.97

<强>输出

class Body extends React.Component {
  render() {
     var value = this.props.value;