Re: [問題] plyr

看板R_Language作者 (攸藍)時間9年前 (2015/07/01 21:34), 9年前編輯推噓2(203)
留言5則, 2人參與, 最新討論串2/5 (看更多)
library(plyr) library(dplyr) set.seed(1) d <- data.frame(year = rep(2000:2002, each = 3), count = round(runif(9, 0, 20))) ddply(d, "year", summarise, tol = sum(count), count_year = n()) # year tol count_year # 1 2000 23 3 # 2 2001 40 3 # 3 2002 45 3 # 單純用plyr做 set.seed(1) d <- data.frame(year = rep(2000:2002, each = 3), count = round(runif(9, 0, 20))) d$ones = 1 ddply(d, "year", summarise, tol = sum(count), count_year = sum(ones)) # 用dplyr + magrittr library(dplyr) library(magrittr) set.seed(1) d <- data.frame(year = rep(2000:2002, each = 3), count = round(runif(9, 0, 20))) d %>% group_by(year) %>% summarise(tol = sum(count), count_year = n()) ※ 引述《psinqoo (零度空間)》之銘言: : [問題類型]:: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : [軟體熟悉度]: : 請把以下不需要的部份刪除 : 使用者(已經有用R 做過不少作品) : [問題敘述]: : 請簡略描述你所要做的事情,或是這個程式的目的 : set.seed(1) : d<- data.frame(year = rep(2000:2002, each = 3),3+ count = round(runif(9, 0, 20))) : print(d) : 資料長這樣 : year count : 1 2000 5 : 2 2000 7 : 3 2000 11 : 4 2001 18 : 5 2001 4 : 6 2001 18 : 7 2002 19 : 8 2002 13 : 9 2002 13 : ddply(d, "year", summarise, tol = sum(count)) : 會變這樣子 : year tol : 1 2000 23 : 2 2001 40 : 3 2002 45 : 但我想讓它變 : year tol 計數 : 1 2000 23 3 : 2 2001 40 3 : 3 2002 45 3 : 3<-代表 2000 出現三次 : 該如何改寫? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.7.242 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1435757688.A.FFA.html

07/01 22:45, , 1F
加library(dplyr) 才能用 count_year = n()
07/01 22:45, 1F

07/01 22:47, , 2F
謝謝 celestialgod
07/01 22:47, 2F

07/01 23:38, , 3F
這兩個交雜用,很容易有錯
07/01 23:38, 3F
只要先library(plyr),再library(dplyr) 通常不太有問題 重複的function會被蓋過,不懂obarisk大大指的是哪方面的錯

07/02 19:47, , 4F
script還好,寫成package就...
07/02 19:47, 4F
寫成package重複的指令前面 就加上namespace去指定使用哪一個套件 這樣應該還好。 ※ 編輯: celestialgod (111.248.28.53), 07/02/2015 20:54:20

07/02 22:55, , 5F
恩,有好習慣就沒問題
07/02 22:55, 5F
文章代碼(AID): #1La-nu_w (R_Language)
討論串 (同標題文章)
以下文章回應了本文
4
4
完整討論串 (本文為第 2 之 5 篇):
0
3
9年前, 07/01
4
4
文章代碼(AID): #1La-nu_w (R_Language)