Re: [問題] plyr

作者: celestialgod (天)   2015-07-01 21:34:45
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 出現三次
: 該如何改寫?
作者: psinqoo (零度空間)   2015-07-01 22:45:00
加library(dplyr) 才能用 count_year = n()謝謝 celestialgod
作者: obarisk (OSWALT)   2015-07-01 23:38:00
這兩個交雜用,很容易有錯

Links booklink

Contact Us: admin [ a t ] ucptt.com