Re: [問題] plyr
應該可以寫得更簡潔,但這應該是你想要的,看不懂的話,可以google一下spread的用法
library(tidyr)
library(dplyr)
df <-  data.frame(id = rep(LETTERS[1:5],4),
              year = rep(2011:2014, 5),
              cost= sample(200:500, 20))
long <- df %>% group_by(id, year) %>% summarize(count=n(), amount=sum(cost))
%>% ungroup()
count_wide <- long %>% select(id, year, count) %>%
mutate(year=paste0("count_", year)) %>% spread(year, count)
cost_wide <- long %>% select(id, year, amount) %>%
mutate(year=paste0("amount_", year)) %>% spread(year, amount)
total_wide <- df %>% group_by(id) %>% summarize(total_count = n(), total_cost
= sum(cost))
wide <- count_wide %>% left_join(cost_wide, "id") %>% left_join(total_wide,
"id")
※ 引述《psinqoo (零度空間)》之銘言:
: 延伸問題
: 原始資料
: 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())
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 69.255.1.0
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1435895295.A.12A.html
※ 編輯: dreamreader (69.255.1.0), 07/03/2015 11:52:59
→
07/03 11:55, , 1F
07/03 11:55, 1F
→
07/03 11:59, , 2F
07/03 11:59, 2F
討論串 (同標題文章)
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章