作者celestialgod (攸蓝)
看板R_Language
标题Re: [问题] 处理资料问题(pkg:dplyr)
时间Tue Aug 4 22:30:58 2015
※ 引述《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
补充,你有两个一样大的最大值会有问题
那时候要怎麽解决就看资料使用人要怎麽改.... 这部分空间比较大
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.205.27.107
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1438698662.A.15C.html
1F:推 gbd37: 已跪08/04 22:33
不用跪,快快请起
2F:→ Wush978: 跟着跪08/04 22:40
太夸张罗,Wush大大。
3F:推 squallscer: 在跟着跪08/04 22:40
s大,别这样,请起。
4F:→ andrew43: 不准跪,那我倒立可以吗?08/05 00:50
那我要看真人版的XD
5F:推 cywhale: 推推推 NA_character_学起来~~~08/05 09:01
还有NA_real_跟NA_integer_
6F:推 allen1985: 太强大了08/05 11:49
7F:推 psinqoo: 後空翻了08/05 13:18
谢谢a大跟p大
※ 编辑: celestialgod (123.205.27.107), 08/05/2015 13:31:34