【发布时间】:2015-02-13 11:53:10
【问题描述】:
我对 R 非常陌生,但多年来一直在开发 SAS 程序(和 VBA)。好吧,问题是我有 4 行 R 代码(脚本?),我想重复 44 次。对 22 个不同的火车站中的每一个进行两次,指示火车是进站还是出站。四行代码分别是:
dataGL_FLIin <- subset( dataGL_all, select = c(Tidsinterval, Dag, M.ned, Ugenr.,Kode, Ugedag, FLIin))
names(dataGL_FLIin)[names(dataGL_FLIin)=='FLIin'] <- 'GL_Antal'
dataGL_FLIin$DIR<-"IN"
dataGL_FLIin$STATION<-"FLI
为了避免将 4 行重复 44 次,我需要 2 个“宏变量”(是的,我知道,这只是 SAS 的东西,抱歉)。一个“宏变量”表示火车站,一个表示方向。在上面的示例中,火车站是 FLI,方向是 in。下面同样的 4 条线路展示了火车站 FBE,这次是在out-前进方向。
dataGL_FBEout <- subset( dataGL_all, select = c(Tidsinterval, Dag, M.ned, Ugenr.,Kode, Ugedag, FBEout))
names(dataGL_FBEout)[names(dataGL_FBEout)=='FBEout'] <- 'GL_Antal'
dataGL_FBEout$DIR<-"OUT"
dataGL_FBEout$STATION<-"FBE"
我看了很多地方,尝试了很多 R-functions 和 R-lists 的组合,但我无法让它工作。很可能我弄错了。如果这个问题(太)愚蠢,我会提前道歉,但是非常感谢您对此事的任何帮助。
请。请注意,我最终想要创建 44 个不同的数据框: 1) 数据GL_FLIin 2) 数据GL_FBEout 3) 等等……
添加:我的问题的2站2方向示例
'The one data frame I have'
Date<-c("01-01-15 04:00","01-01-15 04:20","01-01-15 04:40")
FLIin<-c(96,39,72)
FLIout<-c(173,147,103)
FBEin<-c(96,116,166)
FBEout<-c(32,53,120)
dataGL_all<-data.frame(Date, FLIin, FLIout, FBEin, FBEout)
'The four data frames I would like'
GL_antal<-c(96,39,72)
Station<-("FLI")
Dir<-("IN")
dataGL_FLIin<-data.frame(Date, Station, Dir, GL_antal)
GL_antal<-c(173,147,103)
Station<-("FLI")
Dir<-("OUT")
dataGL_FLIout<-data.frame(Date, Station, Dir, GL_antal)
GL_antal<-c(96,116,166)
Station<-("FBE")
Dir<-("IN")
dataGL_FBEin<-data.frame(Date, Station, Dir, GL_antal)
GL_antal<-c(32,53,120)
Station<-("FBE")
Dir<-("OUT")
dataGL_FBEout<-data.frame(Date, Station, Dir, GL_antal)
谢谢, 拉尔斯
【问题讨论】:
-
你不能只使用一个函数并传递火车站和方向的变量吗?
-
嗨,克里斯蒂安,谢谢您的回复。是的,您的建议可能是解决方案,但我无法找出正确的语法...
-
你能添加一个可重现的例子吗?至少是原始数据以及最终结果应该是什么样子?
-
谢谢你,克里斯蒂安!