R_Language 板


LINE

※ 引述《locka (locka)》之铭言: : [问题类型]: : : 程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来) : : [问题叙述]: : 请简略描述你所要做的事情,或是这个程式的目的 : 各位大大们好: : 想请教该怎麽把一个 data frame 里面的row 按特定顺序重新排序 : 例如说我有一个 list factory_list 是a,b,c,d,e : 然後我dataframe mydf是 : c 1000 : d 1500 : b 3000 : 我想要按照factory_list的顺序重新排序变成 : a 0 : b 3000 : c 1000 : d 1500 : e 0 : 当list跟mydf长度一样的时候我用 mydf[factory_list,] 可以正确排序 : 但当list长度不一样的时候就会出现问题 : 想了很久实在不知道该从何下手,烦请各位大大求解惑了 m(__)m : *补充: : 原本想自己重现问题可是却无法(结果不对) : 所以後来是用dput把原始data印出来再修改 : 详细情形请见程式码 : (不知道差别在哪里...如果有大大知道为什麽也欢迎指点!) : 先谢谢大家了!!! : [程式范例]: : : http://ideone.com/YmgnI7 : : [关键字]: : : data frame, 排序 用merge跟match就可以达到你要的效果了 library(data.table) library(pipeR) factory_list_dt <- data.table(factory = c("台北", "台中", "高雄", "新竹", "台南")) dt1 <- data.table(factory = c("台北", "高雄", "新竹", "台中", "台南"), rev = c(9.23913043478261,16.3571428571429, 15.6206896551724, 15.0980392156863, 10)) dt1_sorted <- merge(factory_list_dt, dt1, by = "factory", all.x = TRUE) %>>% `[`(match(factory_list_dt$factory, factory)) print(dt1_sorted) # factory rev # 1: 台北 9.23913 # 2: 台中 15.09804 # 3: 高雄 16.35714 # 4: 新竹 15.62069 # 5: 台南 10.00000 dt2 <- data.table(factory = c("台北", "台中", "高雄"), rev = c(9.23913043478261,16.3571428571429, 15.6206896551724)) dt2_sorted <- merge(factory_list_dt, dt2, by = "factory", all.x = TRUE) %>>% `[`(match(factory_list_dt$factory, factory)) %>>% `[`(j = rev := ifelse(is.na(rev), 0, rev)) print(dt2_sorted) # factory rev # 1: 台北 9.23913 # 2: 台中 16.35714 # 3: 高雄 15.62069 # 4: 新竹 0.00000 # 5: 台南 0.00000 -- R资料整理套件系列文: magrittr #1LhSWhpH (R_Language) https://goo.gl/OBto1x data.table #1LhW7Tvj (R_Language) https://goo.gl/QFtp17 dplyr(上.下) #1LhpJCfB,#1Lhw8b-s (R_Language) https://goo.gl/GcfNoP tidyr #1Liqls1R (R_Language) https://goo.gl/pcq5nq pipeR #1NXESRm5 (R_Language) https://goo.gl/cDIzTh --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.234.177.169
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1478004578.A.2C7.html
1F:推 locka: 感谢celestialgod大大,回到家来研究看看 11/01 20:57
2F:→ locka: 不过如果我原始的factory_list不是data.table的话怎麽办呢 11/01 20:58
3F:→ locka: 我原始的factory_list其实是用readOGR下载的地图中的某栏位 11/01 21:01
4F:→ locka: 之後要拿来作图 不确定把factory_list改成dt後能不能用 11/01 21:02
5F:→ locka: 我回家再试试看!! 11/01 21:03
6F:推 cywhale: 如果DT中有factory栏位 setkey(DT,factory) 然後你有原来 11/01 22:07
7F:→ cywhale: 的factorlist, DT[factorlist, nomatch=NA]再把NA改0即可 11/01 22:09
8F:推 cywhale: 如果只有dataframe, out<-df[match(lf,rownames(df)),] 11/01 22:10
9F:→ cywhale: 再把out[is.na(out)]<-0和rownames加回去应也不会太麻烦? 11/01 22:12







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP