2015-04-01 50 views
0

我是新來的,對R和一般統計都很新穎。 我以csv格式獲得了一百萬行數據。有4列:說 Col1中 - 位置 col2的 - 別人的名字 COL3 - 日訪問 COL4 - 參觀時間準備分析數據

當導入式的R它們被翻譯成數據幀和所有列字符(我使用STR ()找到我的導入數據和類的結構()這就是爲什麼我知道它的一個data.frame。

正如你看到他們都沒有數字,我想能夠做一些聚合例如計數數按地點訪問,按地點訪問,反之亦然。

我是否需要操作R之外的數據,例如導入到SQL並在那裏做一些聚合,或者我可以在R中做到這一點?

我希望你能指導我在正確的方向...許多感謝 佩迪

+0

可以使用'表()'函數來按組計數。參見'?table' – 2015-04-01 18:59:38

+0

看看'xtabs'函數。如果使用'tapply'或'aggregate',返回計數的標準方法是使用'length'。 @hadley(和其他我認爲)已經構建了addon包的'count'函數。 – 2015-04-01 19:09:14

回答

0

我建議讓您熟悉plyr包。

install.packages("plyr") 

它會要求你選擇一個地方下載,只需選擇最接近你的地方。然後加載庫

library(plyr) 

好了,所以可以說我們有一個看起來像這樣

> df 
    Name Day Location 
52 Jake Wed  MI 
25 Sally Tue  NY 
38 Sue Fri  NY 
45 Sally Tue  MI 
42 Sue Mon  MI 
17 Sally Fri  CA 
28 Jake Tue  NY 
14 Sue Thur  CA 
47 Jim Tue  MI 
67 Jim Tue  AL 

我們可以問每一個位置了多少次訪問數據幀

> ddply(df, .(Location), summarise, count=length(Name)) 
    Location count 
1  CA  2 
2  NY  3 
3  MI  4 
4  AL  1 

,或者有多少人們在某一天訪問了某個位置

> ddply(df, .(Location, Day), summarise, count=length(Name)) 
    Location Day count 
1  CA Thur  1 
2  CA Fri  1 
3  NY Tue  2 
4  NY Fri  1 
5  MI Mon  1 
6  MI Tue  2 
7  MI Wed  1 
8  AL Tue  1 

你應該在plyr上查看一個完整的教程,但是對於上面的命令,基本上發生的是ddply正在通過指定的列中值的唯一組合來拆分數據框,並根據函數彙總數據(在我們的案例長度),你指定。

我希望這會有所幫助。

0

我喜歡plyr,因爲我第一次瞭解它,但似乎每個人都在向dplyr轉變。

對於非常具體的計數,plyrdplyr中都有count()函數。

一些例子:

 
> plyr::count(df$column1) 
    x freq 
1 var1 55 
2 var2 63 
3 var3 12
 
> plyr::count(df$column1 == "var1") 
     x freq 
1 FALSE 75 
2 FALSE 55
> plyr::count(df$column1 == "var1" & df$column2 == "varA") 
     x freq 
1 FALSE 105 
2 FALSE 25

對於dplyr,對於給定的第一個例子的基本語法是:

 
> dplyr::count(df, column1) 
# A tibble: 2 x 2 
    column1 n  
    chr  int 
1 var1 55 
2 var2 63 
3 var3 12