11

私は R プログラミングが初めてで、R でテキスト ファイルを読みたいと思っています。

列の 1 つ、列 7 が数値で、各数値が ID を表しているとします。R に数値を文字列のように読み取らせます。そして、各IDがファイルに現れる回数を数えます(後で使用するために、各IDの頻度を特定のIDに割り当てることができるように)私は試しました

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

これは機能しますが、ID を数字として受け取ります。今、私は試しました

freq=table(as.character(ID))

ただし、列 ID 全体を 1 つの文字列として取り、

summary(freq)

私は得る

Number of cases in table: 1 
Number of factors: 1 
4

3 に答える 3

14

テキスト ファイルからデータ フレームにデータを読み込むときに、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、7 番目として選択する必要があります。したがって、最初の 6 列が数値の場合、次のようになりますcolClasses = c(rep("numeric",6),"factor")

于 2013-02-28T06:25:42.577 に答える
5

as.characterあなたtableが正しく動作する必要がなければ(つまり)freq <- table(ID)、から引用する?tableと、入力は次のようになります。

要素 (文字列を含む) として解釈できる 1 つ以上のオブジェクト、またはそのように要素を解釈できるリスト (またはデータ フレーム)。(as.table および as.data.frame の場合、特定のメソッドに渡される引数。)

于 2013-02-28T07:33:21.037 に答える
4

データフレームのコンマを見逃したと思います。

mydata<-(read.table(filename.txt))
ID=mydata[,7]  #added comma
freq=table(as.character(ID))
于 2013-02-27T20:03:38.713 に答える