R_Language 板


LINE

我完全是依照你给的"程式范例",修改成带有简单回圈的function: #我假设:1.你已把10年份的资料都汇入R(year1,year2,...) 2."程式范例"可以正确地做出你想要的结果 #开始吧! wish <- function(productname="Product1", monthname="July") { #挑选想看的产品资料并依月分做切割 year1.Product = split(year1[,productname] , year1[,Month]) year2.Product = split(year2[,productname] , year[,Month]) . . . year10.Product = split(year10[,productname] , year10[,Month]) #挑出某一月份的销售数字 year1ProductMonth =year1.Product[[monthname]] year2ProductMonth =year2.Product[[monthname]] . . . year10ProductMonth =year10.Product[[monthname]] #存成dataframe後输出到csv ProductMonth = data.frame(year1ProductMonth, year2ProductMonth, ..., year10ProductMonth) return(ProductMonth) } #之後你再自己看要不要write.csv汇出吧! 如果要再"优化"的话,就得更加了解你想要得到什麽结果 以及资料取得的方式...etc. 就先这样子吧~ ※ 引述《peiwinds (Macchiato Caramel)》之铭言: : [问题类型]: : 程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来) : : [软体熟悉度]: : 入门(写过其他程式,只是对语法不熟悉) : [问题叙述]: : hi大家好 : 我现在有10个档案,档名是 Sale1~10.csv : 10个档案代表1~10年的销售资料 : column都是一些产品名称 : row是月份 : 现在我想要把固定一个产品的某个月份,观看十年来的差异 : 本来我用了split函数就能捞到我想看的10年的<产品+月份> : 然後产生一个CSV档,我再用EXCEL拉出趋势图看 (EXCEL颜色比较漂亮Q_Q) : 但是我主管想要自己去挑选<产品+月份>的组合自己跑R来看资料 : 我就必须要把程式写得比较弹性让他自行输入产品跟月份 : 最後一样只要产生一个CSV档给他自己拉趋势图看就好 : [程式范例]: : #读档 : year1 <- read.csv("D:/year1.csv") : year2 <- read.csv("D:/year2.csv") : year3 <- read.csv("D:/year3.csv") : year4 <- read.csv("D:/year4.csv") : year5 <- read.csv("D:/year5.csv") : year6 <- read.csv("D:/year6.csv") : year7 <- read.csv("D:/year7.csv") : year8 <- read.csv("D:/year8.csv") : year9 <- read.csv("D:/year9.csv") : year10 <- read.csv("D:/year10.csv") : #挑选想看的产品资料并依月分做切割 : year1.Product1 = split(year1$Product1 , year1$Month) : year2.Product1 = split(year2$Product1 , year2$Month) : year3.Product1 = split(year3$Product1 , year3$Month) : year4.Product1 = split(year4$Product1 , year4$Month) : year5.Product1 = split(year5$Product1 , year5$Month) : year6.Product1 = split(year6$Product1 , year6$Month) : year7.Product1 = split(year7$Product1 , year7$Month) : year8.Product1 = split(year8$Product1 , year8$Month) : year9.Product1 = split(year9$Product1 , year9$Month) : year10.Product1 = split(year10$Product1 , year10$Month) : #挑出Product1在十年来July销售量 : year1Product1July =year1.Product1$"July" : year2Product1July =year2.Product1$"July" : year3Product1July =year3.Product1$"July" : year4Product1July =year4.Product1$"July" : year5Product1July =year5.Product1$"July" : year6Product1July =year6.Product1$"July" : year7Product1July =year7.Product1$"July" : year8Product1July =year8.Product1$"July" : year9Product1July =year9.Product1$"July" : year10Product1July =year10.Product1$"July" : #存成dataframe後输出到csv : Product1July = : data.frame(year1Product1July,year2Product1July,year3Product1July, : year4Product1July,year5Product1July,year6Product1July,year7Product1July, : year8Product1July,year9Product1July,year10Product1July) : write.csv(Product1July, file="D:/Product1July.csv") : 我尝试着先以 #挑选想看的产品资料并依月分做切割 : 写了for回圈搭配paste结果失败了 : Product = "Product1" #可自行输入产品编号 : Month = "July" #可指定月份 : for(i in 1:10){ : x = paste("year",i,Product,sep=""); : y = paste("year",i,"$",Product,sep=""); : z = paste("year",i,"$",Month,sep=""); : x = split(y,z); : } : 请问我上面程式要怎麽修改才能让做到像上面那些指令的结果呢 : 感觉是split认为paste出来的东西不是object : 我想要把上面这些写死的script写得更弹性简洁一些 : 求高人指点 谢谢 : [关键字]: : : 选择性,也许未来有用 : --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.69.175.253
1F:推 peiwinds:感谢你 有几个地方想请教 1.在year1ProductMonth =year1. 10/24 13:59
2F:→ peiwinds:这部分 如果我想要year1ProductMonth的是显示成我实际 10/24 14:00
3F:→ peiwinds:输入的产品名称跟月份名称 该怎麽处理呢? 谢谢 10/24 14:00
4F:推 peiwinds:或者是说最後写出CSV档时档名是随着"产品""年分"变动也可 10/24 14:08
5F:→ diplazium:这个要在return之前修改ProductMonth的栏位名称: 10/24 14:15
6F:→ diplazium:colnames(ProductMonth) <- (栏名1,栏名2,...) 10/24 14:16
7F:推 peiwinds:Error in `[.data.frame`(year1, , Month) : object 'Mon 10/24 14:48
8F:→ peiwinds:object 'Month' not found 出现这个Error了 求解 10/24 14:50
9F:推 peiwinds:我的Data确实有Month栏位 大小写也没错 Q_Q 10/24 15:02
10F:→ peiwinds:解决上面的问题了 但是最後结果是data frame with 0 10/24 15:16
11F:→ peiwinds:columns and 0 rows 我再研究看看 Q_Q 10/24 15:16
12F:→ diplazium:因为我只是提供回圈版的"你的code",所以如果原本可以得 10/24 15:37
13F:→ diplazium:解的话,按照我的code也应该是OK的 10/24 15:38
14F:→ diplazium:我想问题有可能出在於data.frame()里头每一项的vector长 10/24 15:40
15F:→ diplazium:度不同(因为一项产品在某一个月份的销售数字有多笔) 10/24 15:41
16F:→ diplazium:因为我不了解你的资料,所以只能提供这样的code 10/24 15:42
17F:推 peiwinds:感谢你 问题解决了 看来是我後来变数命名规则和原本的csv 10/24 15:49
18F:→ peiwinds:有相冲才会造成上面的结果~ 10/24 15:49
19F:→ peiwinds:此外 year1[,Month] 改成 year$Month 就没有error了! 10/24 15:50







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灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP