2016-05-18 3 views
1

私は、州ごとのアンケートの質問に対して、「はい」、「いいえ」、「 - 」(無回答)のデータフレームを持っています。カウントは名前付きカラム( " - "、 "N"、 "Y")を持つテーブルとしてデータフレームのセルに保存され、すべてのカラムに対してプログラムでどのように関数を実行できるかを理解する上で問題があります。データフレーム内でテーブルを操作する方法は?

基本的には、各セルの「Y」の割合を取得したいと考えています。

usfarmersmarkets <- read_csv("https://apps.ams.usda.gov/FarmersMarketsExport/ExcelExport.aspx") 
usfm <- usfarmersmarkets[c(2, 9:11,21, 22, 24:58)] 
testing <- aggregate(usfm[,7:41], list(usfm$State), table) 

これは、私がやりたいことの例ですが、$ Creditだけでなく、すべての行を "California"ではなくすべての列に対して示しています。たぶん、リストやデータフレームとして出力を保存することができます。

testing[testing$Group.1 == "California",]$Credit$'05'[2]/
sum(testing[testing$Group.1 == "California",]$Credit$'05') *100 

     Y 
50.06536 


The dataframe has this general format 
|Group.1  Credit  WIC   WICCash  ... 
|Alabama c(105, 39) c(134, 10) c(140, 4)  ... 
|Alaska  c(20, 18)  38   c(30, 8)  ... 
|Arizona c(28, 69)  c(62, 35)  c(60, 37)  ... 
|Arkansas c(69, 33)  c(81, 21)  c(92, 10)  ... 
|California 382:383  c(403, 362) c(385, 19, 361) ... 
|... 

気付いたことがあるように、セルには1〜3つの異なる値が含まれています。セルに1つの値がある場合は、おそらくすべて「いいえ」です。 2つの値がある場合、最初の数字は「いいえ」で、2番目の数字は「はい」です。 3つの値がある場合、最初の数字は「 - 」s、2番目の数字は「いいえ」、3番目の数字は「はい」です。

ご協力いただければ幸いです。

また、私はかなり新しいRですので、ごめんなさい、私の専門用語がオフになっていれば、何でも私を修正することができます。

答えて

1

これを行う最も簡単な方法は、dplyrとtidyrを使用することです。これらは、データ操作に関する本当に強力な考え方を提供しているため、Rを取り上げているかどうかを知るのに最適なツールです。この場合、私はその後、最終的なテーブルのために戻って全体のデータにそれを回す、Yさんの割合をカウントするためにグループ化された操作を行うには、長い形式にワイドフォーマットからデータを変換:

library(dplyr) 
library(tidyr) 

usfm %>% 
    gather(var, value, Credit:WildHarvested) %>% 
    group_by(State, var) %>% 
    summarise(prop_Y = sum(value == "Y")/n()) %>% 
    spread(var, prop_Y) 

他があります。 lapplyで各列に機能を適用するような仕事をする方法はありますが、私はdplyrがおそらく最も簡単なものであり、最も強力なものだと思います。

+0

これは完璧に感謝しています。私はもっ​​とdplyrとtidyrと遊ぶ必要があります。私は明らかにこの問題ですべて間違っていた。再度、感謝します! – xpontimus

+0

私は、あなたがちょうどdplyrとtidyrが緩和するために開発された痛みを経験していたと思っています。パッケージの大きな利点は、データがどこにあるかからどこに行きたいかを次のステップで把握する上で、優れたメンタルモデルを開発するのに役立ちます。私はHadleyの本をここにお勧めしたいと思います:http://r4ds.had.co.nz/transform.htmlその本のR言語に関する他のすばらしいものがたくさんあります。 – Shorpy

+0

ああ素晴らしい。これは偉大な夏の読書、非常に高く評価されます – xpontimus

関連する問題