小编Mid*_*eek的帖子

多列移动平均值 - 分组数据

如果已经回答,请道歉.我今天经历了很多例子,但我找不到任何符合我要做的事情.

我有一个数据集,我需要计算3点移动平均线.我在下面生成了一些虚拟数据:

set.seed(1234)
data.frame(Week = rep(seq(1:5), 3), 
 Section = c(rep("a", 5), rep("b", 5), rep("c", 5)), 
 Qty = runif(15, min = 100, max = 500), 
 To =  runif(15, min = 40, max = 80))
Run Code Online (Sandbox Code Playgroud)

我想根据'Qty'和'To'列的'Section'列计算每个组的MA.理想情况下,输出将是数据表.移动平均线将从第3周开始,因此将是1:3的平均值

我正在尝试掌握data.table包,所以使用它的解决方案将是伟大的,否则任何将非常感激.

仅供参考,我的实际数据集将有大约.70个部分,总共有c.1M行.到目前为止,我发现data.table非常快速地处理这些卷.

r data.table

5
推荐指数
1
解决办法
969
查看次数

根据标准合并/加入数据框/表 - >或<

我有一个包含每周数据的数据框.每个部分有大约104周的数据,总共有83个部分.

我有第二个数据框,其中包含按部分的开始和结束周,我想过滤主数据框.

在两个表中,周是年和周的组合,例如201501,并且总是从第1周到第52周.

因此,在下面的示例中,我想在201401年到201404年之间过滤A部分,在2015年到201603周之间过滤B部分.

我最初认为我可以在我的Weeks_Filter数据框中添加一个额外的列,该数据框是每个部分的周开始和结束的序号(每周重复每行),然后合并2个表并保留所有数据来自Weeks_Filter表(all.y = TRUE),因为这对我做的一小部分样本起作用,但我不知道如何添加连续周,因为它们可以跨越不同年份.

Week <- c("201401","201402","201403","201404","201405", "201451", "201552", "201601", "201602", "201603")
Section <- c(rep("A",5),rep("B",5))
df <- data.frame(cbind(Week, Section))

Section <- c("A", "B")
Start <- c("201401","201551")
End <- c("201404","201603")
Weeks_Filter <- data.frame(cbind(Section, Start, End))
Run Code Online (Sandbox Code Playgroud)

merge r dataframe data.table

5
推荐指数
1
解决办法
185
查看次数

按组R data.table进行滚动平均

我想从组中的第一行开始并在最后一行结束时按组计算YTD滚动平均值.以下示例......

Group <- c(rep("a",5), rep("b",5))
Sales <- c(2,4,3,3,5,9,7,8,10,11)
Result <- c(2,3,3,3,3.4,9,8,8,8.5,9)
df <- data.frame(Group, Sales, Result)
Run Code Online (Sandbox Code Playgroud)

结果列是我期望从滚动平均值中看到的.

r data.table

4
推荐指数
1
解决办法
2667
查看次数

加速此循环以创建具有data.table的虚拟列并在R中设置

我有一个数据表,我想为每个唯一的日创建一个新列,然后在每一行中为每天匹配列名称分配1

我使用for循环完成了这个,但我想知道是否有任何方法使用data.table和set来优化它?

这是一个例子

dt <- data.table(Week_Day = c("Monday", "Tuesday", "Wednesday",
                          "Thursday", "Friday", "Saturday", "Sunday"))

Day <- unique(dt$Week_Day)
for (i in 1:length(Day)) {
    if (Day[i] != "Sunday") {
        dt[, Day[i] := ifelse(Week_Day == Day[i], 1, 0)]
    }
}
Run Code Online (Sandbox Code Playgroud)

我的表是298k行,虽然它不需要很长时间执行(下面),它是一个长脚本的一部分,我有相当多的低效循环,所以我试图让整个运行时间缩短.

运行时间:

user  system elapsed
0.99    0.06    1.05
Run Code Online (Sandbox Code Playgroud)

提前致谢.

performance r model.matrix data.table dummy-variable

4
推荐指数
1
解决办法
5476
查看次数

如何在 Julia 中连接到 MySQL 数据库

我是 Julia 的新手,过去几年一直在使用 R,我正在努力完成我的第一个任务,即连接到我的 AWS MySQL 数据库。

我遵循了许多在线教程,但无论我做什么,我都会收到相同的消息。

一切都是昨天安装的,所以它应该都是当前版本。

julia-version = 1.5.2 版

这是代码:

Pkg.add(PackageSpec(url="https://github.com/JuliaComputing/MySQL.jl"))
Pkg.add(PackageSpec(url="https://github.com/JuliaDB/DBI.jl"))

using MySQL
con = MySQL.connect("ec2blah.eu-west-2.compute.amazonaws.com", "name", "password", db = "database")
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到以下错误:

UndefVarError: connect not defined
getproperty(::Module, ::Symbol) at Base.jl:26
top-level scope at data_prep.jl:18
Run Code Online (Sandbox Code Playgroud)

谢谢

julia

4
推荐指数
1
解决办法
297
查看次数

在数据表中分割长度可变的字符串

我想根据另一列中的一部分字符串创建一个列。

参考列遵循以下通用格式:GB / 12月31日

在这种情况下,我想提取单词“ Ling”,并且长度不一。

到目前为止,我的方法是:

library(data.table)
d1 <- data.table(MENU_HINT = 
                 c("GB / Ling 31st Dec", "GB / Taun 30th Dec", 
                   "GB / Ayr 19th Dec", "GB / Ayr 9th Nov", 
                   "GB / ChelmC 29th Sep"), 
             Track = c("Ling", "Taun", "Ayr", "Ayr", "ChelmC"))

#remove all the spaces
d1[, Track2 := gsub("[[:space:]]", "", MENU_HINT)]

# get the position of the first digit
d1[, x := as.numeric(regexpr("[[:digit:]]", Track2)[[1]])]

# get the position of the '/'
d1[, y := as.numeric(regexpr("/", Track2))[[1]]]

# …
Run Code Online (Sandbox Code Playgroud)

regex r data.table

3
推荐指数
1
解决办法
148
查看次数