2013-02-27 40 views
8

Tôi mới ở lập trình R và tôi muốn đọc tệp văn bản trong R.Đọc số dưới dạng chuỗi

Một trong các cột, cho biết cột 7 là số và mỗi số đại diện cho ID tôi muốn đọc R những con số như thể họ là những sợi dây. Và đếm số lần mỗi ID xuất hiện trong các tập tin (ví dụ mà sau này tôi có thể gán các tần số của từng ID để ID được sử dụng sau) Tôi đã thử

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

này hoạt động nhưng phải mất ID dưới dạng số. Bây giờ tôi đã cố gắng

freq=table(as.character(ID)) 

Nhưng sau đó phải mất ID toàn bộ cột như chỉ có một chuỗi và từ

summary(freq) 

tôi nhận được

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

định dạng và thêm 'r' có thể tìm thấy' R'. –

+0

@Julius nên 'r' và' R' giống nhau? –

+0

@GrijeshChauhan, tôi sẽ nói nó phổ biến hơn để gọi nó là R, nhưng ở đây thẻ 'r' là chính xác. – Julius

Trả lời

2

Tôi nghĩ rằng bạn bỏ lỡ dấu phẩy trong dataframe của bạn .

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

Tại thời điểm đọc dữ liệu vào khung dữ liệu của bạn từ các tập tin văn bản mà bạn có thể chỉ định kiểu của mỗi cột bằng cách sử dụng lập luận colClasses. Xem bên dưới tệp có trong máy tính của tôi:

> 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 

như bạn có thể thấy R không còn coi mã zip là số nhưng làm yếu tố. Trong trường hợp của bạn, bạn cần phải xác định lớp của 6 cột đầu tiên và sau đó chọn factor làm thứ bảy của bạn. Vì vậy, nếu 6 cột đầu tiên là số, nó phải là một cái gì đó như thế này colClasses = c(rep("numeric",6),"factor").

4

mà không as.charactertable bạn nên làm việc một cách chính xác (ví dụ freq <- table(ID)), Trích dẫn từ ?table, đầu vào của bạn có thể là:

một hoặc nhiều đối tượng có thể được hiểu là các yếu tố (bao gồm chuỗi ký tự), hoặc một danh sách (hoặc khung dữ liệu) có thành phần có thể là để diễn giải. (Đối với as.table và as.data.frame, đối số được chuyển đến các phương pháp cụ thể.)

Các vấn đề liên quan