這個問題只用dplyr就可以了:
early <-
filter(df, stage == "early") %>%
group_by(Firm, year) %>%
summarise(early = n())
later <-
filter(df, stage == "later") %>%
group_by(Firm, year) %>%
summarise(later = n())
full_join(early, later)
這應該就是你要的!
另外一個給新手的小建議, dplyr 設計的API, 可以解決許多實務問題
這背後是有一些代數理論的支持的.
長久以來SQL在資料庫的成功也證實這套API可以解決許許多多的問題
ps. dplyr的API設計等價於SQL
所以往這方向練習應該是沒錯
※ 引述《atomo (Mr.Wu)》之銘言:
:
: ctrl + y 可以刪除一整行,請將不需要的內容刪除
: [問題類型]:
:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
:
: [軟體熟悉度]:
: 請把以下不需要的部份刪除
: 新手(沒寫過程式,R 是我的第一次)
: [問題敘述]:
: 原始資料:
: Firm stage year
: A early 2012
: A early 2012
: A later 2012
: A later 2013
: B early 2012
: B early 2013
: B early 2013
: B later 2012
: C early 2013
: C early 2013
: C later 2013
: .......
: 想讓資料會按公司名稱和年度去計算當年度的early以及later的數目
: 想變成:
: Firm year early later
: A 2012 2 1
: A 2013 0 1
: B 2012 1 0
: B 2013 2 0
: C 2013 2 1
: 不好意思,剛開始使用r 不太清楚如何敘述問題和寫程式碼,目前是使用dplyr的
: group_by 和 n() 兩個來練習不知道方向有無錯誤,謝謝有任何需要補充的我在補充
: [環境敘述]:
:
: R version 3.2.3 (2015-12-10)
: Platform: x86_64-apple-darwin13.4.0 (64-bit)
: Running under: OS X 10.11.3 (El Capitan)
:
: [關鍵字]:
:
: 合併資料 計算個數
: