use*_*322 9 r file file-read formal-languages
我是R编程的新手,我想在R中读取一个文本文件.
其中一列,让我们说第7列是数字,每个数字代表一个ID,我希望R读取数字,好像它们是字符串一样.并计算每个ID出现在文件中的次数(以便稍后我可以将每个ID的频率分配给给定的ID供以后使用)我试过了
mydata<-(read.table(filename.txt))
ID=mydata[7]
freq=table(ID)
Run Code Online (Sandbox Code Playgroud)
这有效,但它将ID作为数字.现在我试过了
freq=table(as.character(ID))
Run Code Online (Sandbox Code Playgroud)
但是它将整个列ID作为一个字符串并从中获取
summary(freq)
Run Code Online (Sandbox Code Playgroud)
我明白了
Number of cases in table: 1
Number of factors: 1
Run Code Online (Sandbox Code Playgroud)
小智 11
在从文本文件将数据读入数据框时,您可以使用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
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,R不再将zipcodes视为数字而是将其视为因素.在您的情况下,您需要指定前6列的类,然后选择第7列factor.因此,如果前6列是数字,它应该是这样的colClasses = c(rep("numeric",6),"factor").
如果没有as.character您table应该正常工作(即freq <- table(ID)),引用自?table,您的输入可以是:
一个或多个可以被解释为因素(包括字符串)的对象,或者其组件可以被如此解释的列表(或数据框)。(对于 as.table 和 as.data.frame,参数传递给特定方法。)
我认为您错过了数据框中的逗号。
mydata<-(read.table(filename.txt))
ID=mydata[,7] #added comma
freq=table(as.character(ID))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24493 次 |
| 最近记录: |