访问R中数据框中的字符值

时间:2012-09-02 00:45:01

标签: r

我正在使用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符号

2 个答案:

答案 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>