我正在使用R,我有一个像这样的数据框(很多行)
DATE TICKER PERMNO PERMCO BIDLO ASKHI PRC CFACPR
1 20060901 ALOG 14198 173 55.8112 57.59 56.440 1
2 20060905 ALOG 14198 173 55.0101 56.48 55.650 1
3 20060906 ALOG 14198 173 55.0200 56.53 55.380 1
4 20060907 ALOG 14198 173 55.1200 57.05 56.360 1
5 20060908 ALOG 14198 173 55.3180 56.98 55.345 1
6 20060911 ALOG 14198 173 54.0000 56.23 56.190 1
我正在尝试访问任何行的TICKER值。 喜欢这个
> data[1,]$TICKER
[1] ALOG
150 Levels: ACTG ACTL AEIS ALOG ALSC ALTR AMCC AMK AMSC ANAD ARMH ARMHY ARXX ASTSF ASYS ATMI ATML AVNX AXTI BELFA BELFB BRCM CAMD CATT CBMX CECE ... ZRAN
为什么我将150级别降低到实际值以下。如何访问TICKER符号
答案 0 :(得分:3)
你得到低于结果的水平的原因是因为TICKER被视为一个因素。 Dirk提供了一些关于如何防止这种情况发生的建议,但您可以使用as.character
as.character(data[1, "TICKER"])
或者,如果您想将整个列更改为字符向量而不是因素,则可以执行类似
的操作data$TICKER <- as.character(data$TICKER)
答案 1 :(得分:2)
使用stringsAsFactor=FALSE
作为read.table()
或read.csv()
的选项,或作为全局设置。如果这样做,则值将为字符串。
R> data <- read.table(textConnection(" DATE TICKER PERMNO PERMCO BIDLO ASKHI PRC CFACPR
1 20060901 ALOG 14198 173 55.8112 57.59 56.440 1
2 20060905 ALOG 14198 173 55.0101 56.48 55.650 1
3 20060906 ALOG 14198 173 55.0200 56.53 55.380 1
4 20060907 ALOG 14198 173 55.1200 57.05 56.360 1
5 20060908 ALOG 14198 173 55.3180 56.98 55.345 1
6 20060911 ALOG 14198 173 54.0000 56.23 56.190 1"), header=TRUE, stringsAsFactors=FALSE)
data <- read.table(textConnection(" DATE TICKER PERMNO PERMCO BIDLO ASKHI PRC CFACPR
+ 1 20060901 ALOG 14198 173 55.8112 57.59 56.440 1
+ 2 20060905 ALOG 14198 173 55.0101 56.48 55.650 1
+ 3 20060906 ALOG 14198 173 55.0200 56.53 55.380 1
+ 4 20060907 ALOG 14198 173 55.1200 57.05 56.360 1
+ 5 20060908 ALOG 14198 173 55.3180 56.98 55.345 1
+ 6 20060911 ALOG 14198 173 54.0000 56.23 56.190 1"), header=TRUE, stringsAsFactors=FALSE)
R> data[1,"TICKER"]
[1] "ALOG"
R>