R_Language 板


LINE

※ 引述《helixc (@_2;)》之铭言: : [软体熟悉度]:新手+入门 : [问题叙述]: : 手上有一笔某蛙类的解剖资料,想要分析食性。 : 纪录的时候会长这样: : ID,Food A,Food B,Food C,Food E : C146,,,,3肠 : B287,,,,10肠 : C140,,,,4肠 : C133,,,1肠, : C132,1肠,,, : B305,,,1肠, : C112,,2肠,,1肠 : C120,,,,1肠 : C128,,,,1肠 : 想要整理成这样的资料: : ID, Food type, Amount, Location : C146, E, 3, 肠 : B287, E, 10, 肠 : C140, E, 4, 肠 : C133, C, 1, 肠 library(data.table) library(dplyr) library(tidyr) library(magrittr) library(stringr) tmp_dt = fread("ID,Food A,Food B,Food C,Food E C146,,,,3肠 B287,,,,10肠 C140,,,,4肠 C133,,,1肠, C132,1肠,,, B305,,,1肠, C112,,2肠,,1肠 C120,,,,1肠 C128,,,,1肠", colClasses = rep("Character",5)) ## method 1 output_dt = tmp_dt %>% gather(foodType, tmpCol,-ID) %>% filter(tmpCol != "") %>% mutate(Amount = str_extract(tmpCol, "\\d*"), Location = str_sub(tmpCol, nchar(tmpCol), nchar(tmpCol))) %>% select(-tmpCol) %>% transform(foodType = as.character(foodType)) %>% transform(foodType = str_sub(foodType, nchar(foodType), nchar(foodType))) ## method 2 output_dt2 = tmp_dt %>% gather(foodType, tmpCol,-ID) %>% filter(tmpCol != "") %>% transform(foodType = as.character(foodType), tmpCol = sub("(\\d*)(.)", "\\1,\\2", tmpCol)) %>% separate(tmpCol, c("Amount", "Location")) %>% transform(foodType = str_sub(foodType, nchar(foodType), nchar(foodType))) ## method 3 (不用sub,separate的sep参数可以改成用位置切割) output_dt2 = tmp_dt %>% gather(foodType, tmpCol,-ID) %>% filter(tmpCol != "") %>% transform(foodType = as.character(foodType)) %>% separate(tmpCol, c("Amount", "Location"), -2) %>% transform(foodType = str_sub(foodType, nchar(foodType), nchar(foodType))) output: (3个都一样) # ID foodType Amount Location # 1: C132 A 1 肠 # 2: C112 B 2 肠 # 3: C133 C 1 肠 # 4: B305 C 1 肠 # 5: C146 E 3 肠 # 6: B287 E 10 肠 # 7: C140 E 4 肠 # 8: C112 E 1 肠 # 9: C120 E 1 肠 # 10: C128 E 1 肠 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.205.27.107
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1436512890.A.854.html ※ 编辑: celestialgod (123.205.27.107), 07/10/2015 15:34:05
1F:→ helixc: 好多新函式要学,感谢 07/10 20:16







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