2013-02-27 111 views
8

我在r编程新我想读在R.一个文本文件阅读数字作为字符串

其中一列,可以说第7列是数字,每个数字代表一个ID我想R键读数字就像是字符串一样。和计数的次数每个ID出现在文件中的数字(这样我可以在以后的每个ID的频率分配给了后者利用给定的ID),我试图

mydata<-(read.table(filename.txt)) 
ID=mydata[7] 
freq=table(ID) 

这工作 ,但它需要的ID作为数字。现在,我已经试过

freq=table(as.character(ID)) 

但随后它需要整个列ID作为唯一一个字符串,并从

summary(freq) 

我得到

Number of cases in table: 1 
Number of factors: 1 
+0

格式化并添加'r'可以找到'R'。 – 2013-02-27 18:35:54

+0

@Julius所以'R'和'R'是一样的吗? – 2013-02-27 19:31:23

+0

@GrijeshChauhan,我会说这是更常见的称为R,但这里'r'标签是正确的。 – Julius 2013-02-27 19:41:50

回答

2

我认为你错过了逗号在你的数据帧。

mydata<-(read.table(filename.txt)) 
ID=mydata[,7] #added comma 
freq=table(as.character(ID)) 
9

在读取数据从文本文件数据框,您可以指定使用colClasses说法每一列的类型的时间。查看文件下面有一个在我的电脑:

> head(read.csv("R/Data/ZipcodeCount.csv")) 
    X zipcode stateabb countyno countyname 
1 1  401  NY  119 WESTCHESTER 
2 391  501  NY  103  SUFFOLK 
3 392  544  NY  103  SUFFOLK 
4 393  601  PR  1 ADJUNTAS 
5 630  602  PR  3  AGUADA 
6 957  603  PR  5 AGUADILLA 
> head(read.csv("R/Data/ZipcodeCount.csv",colClasses=c(rep("factor",5)))) 
    X zipcode stateabb countyno countyname 
1 1 00401  NY  119 WESTCHESTER 
2 391 00501  NY  103  SUFFOLK 
3 392 00544  NY  103  SUFFOLK 
4 393 00601  PR  001 ADJUNTAS 
5 630 00602  PR  003  AGUADA 
6 957 00603  PR  005 AGUADILLA 

> zip<-read.csv("R/Data/ZipcodeCount.csv",colClasses=c(rep("factor",5))) 
> str(zip) 
'data.frame': 53424 obs. of 5 variables: 
$ X   : Factor w/ 53424 levels "1","10000081",..: 1 36316 36333 36346 43638 52311 19581 23775 26481 26858 ... 
$ zipcode : Factor w/ 41174 levels "00401","00501",..: 1 2 3 4 5 6 6 7 8 9 ... 
$ stateabb : Factor w/ 60 levels ""," ","AK","AL",..: 41 41 41 46 46 46 46 46 46 46 ... 
$ countyno : Factor w/ 380 levels "","000","001",..: 106 95 95 3 5 7 5 7 7 9 ... 
$ countyname: Factor w/ 1925 levels "","ABBEVILLE",..: 1844 1662 1662 9 10 11 10 11 11 12 ... 
> head(table(zip[,"zipcode"])) 

00401 00501 00544 00601 00602 00603 
    1  1  1  1  1  2 

,你可以看到R的不再治疗拉链码为数字,但作为因素。在你的情况下,你需要指定前6列的类,然后选择factor作为第七列。所以如果前6列是数字,它应该是这样的colClasses = c(rep("numeric",6),"factor")

4

而不as.charactertable应该正常工作(即freq <- table(ID)),从?table引述,你的输入可以是:

,其可被解释为因素(包括 字符串)

一个或多个对象,或列表(或数据框),其组件可以是如此解释的 。 (对于as.table和as.data.frame,参数传递给 的具体方法。)