Re: [问题] 处理资料问题(pkg:dplyr)

楼主: psinqoo (零度空間)   2015-08-06 13:08:36
延伸问题
正被搞晕中
RAW DATA长这样
ID 地点 日期 性别
A TAI 2012 F
A JP 2013 F
A CH 2014 F
A KOE 2011 F
B JP 2011 M
B GOK 2015 M
B TA 2012 M
变成下面这样
第一种 形式
ID 地点一 地点二 地点三 地点四 性别
A KOE TAI JP CH F
B JP TA GOK M
第二种
ID 2011 2012 2013 2014 2015 性别
A KOE TAI JP CH F
B JP TA GOK M
第三种
ID 地点 性别
A KO,TAI,JP,CH F
B JP,TA,GOK M
※ 引述《celestialgod (攸蓝)》之铭言:
: ※ 引述《gbd37 (有够瞎)》之铭言:
: : 软件熟悉度:
: : 入门
: : [问题叙述]:
: : x是原data的型态
: : y是想用dplyr的套件去转换成
: : Fro1是No.那栏出现最多次的字串且n1是出现几次
: : Fro2是No.那栏出现第二多次的字串且n2是出现几次
: : 我试着用group_by summarise count都试不成功
: : 抑或是也可以用别的套件来处理也OK 劳烦大大们指导
: : [程式范例]:
: : x <- data.frame(No.=c(rep('A01',3),rep('A02',3),rep('A03',3)),
: : Fro=c('TPE','KOA','KOA','TAI','TAI',
: : 'TAI','KOA','TPE','TPE'))
: : y <- data.frame(No.=c('A01','A02','A03'),Fro1=c('KOA','TAI','TPE'),
: : n1=c(2,3,2),Fro2=c('TPE','NA','KOA'),n2=c(1,'NA',1))
: : [关键字]:dplyr
: library(dplyr)
: # library(magrittr) # 可省略
: x <- data.frame(No=c(rep('A01',3),rep('A02',3),rep('A03',3)),
: Fro=c('TPE','KOA','KOA','TAI','TAI','TAI','KOA','TPE','TPE'),
: stringsAsFactors = FALSE)
: x %>% group_by(No, Fro) %>% summarise(nFro = n()) %>%
: summarise(Fro1 = Fro[which.max(nFro)], n1 = max(nFro),
: Fro2 = ifelse(n() > 1, Fro[order(nFro) == n()-1], NA_character_),
: n2 = ifelse(n() > 1, nFro[order(nFro) == n()-1], NA))
: 如果x的column是factor会有问题,这个你可以自己找出来
: 结果:
: No Fro1 n1 Fro2 n2
: 1 A01 KOA 2 TPE 1
: 2 A02 TAI 3 NA NA
: 3 A03 TPE 2 KOA 1
: 补充,你有两个一样大的最大值会有问题
: 那时候要怎么解决就看资料使用人要怎么改.... 这部分空间比较大

Links booklink

Contact Us: admin [ a t ] ucptt.com