Re: [問題] plyr
延伸問題
原始資料
id year cost
D 2012 120
E 2013 300
F 2014 200
A 2015 155
E 2011 200
F 2014 160
B 2013 165
B 2015 185
C 2012 350
A 2014 310
E 2014 225
F 2015 175
想變成這樣子
ID 12計數 13計數 14計數 15計數 2012金額 2013金額 2014金額 2015金額 總計數 總金額
A
B
C
D
E
F
雖然 資料量少 EXCEL 可以計算
我想知道R 是否也能用少量語法做到
※ 引述《celestialgod (攸藍)》之銘言:
: 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), 來自: 61.220.43.131
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1435891596.A.594.html
推
07/03 11:22, , 1F
07/03 11:22, 1F
推
07/03 11:23, , 2F
07/03 11:23, 2F
推
07/03 11:35, , 3F
07/03 11:35, 3F
推
07/03 11:35, , 4F
07/03 11:35, 4F
討論串 (同標題文章)
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章