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數位生活區 即時熱門文章