我想计算一下发生了多长时间.
鉴于以下情况,您可以看到灯光在某些时间点亮,但并非在所有时间点亮.我想规范化数据以将其提供给神经网络.
library(data.table)
d<-data.table(
date = c("6/1/2013", "6/2/2013","6/3/2013","6/4/2013"),
light = c(TRUE,FALSE,FALSE,TRUE)
)
d
date light
1: 6/1/2013 TRUE
2: 6/2/2013 FALSE
3: 6/3/2013 FALSE
4: 6/4/2013 TRUE
Run Code Online (Sandbox Code Playgroud)
我想要计算的是另一列显示与最后一次出现的"距离".
所以对于上面的数据:第一行,因为它上面应该是零第二行,应该是第三行,应该是第二行,应该是零
我进行了几天的一系列测量。测量的数量通常为4。任何测量中可以捕获的数字范围为1-5(在现实生活中,给定测试集,该范围可以高达100或低至20)。
我想每天计算每个值在当天之前发生了多少次。
让我用一些示例数据进行解释:
# test data creation
d1 = list(as.Date("2013-5-4"), 4,2)
d2 = list(as.Date("2013-5-9"), 2,5)
d3 = list(as.Date("2013-5-16"), 3,2)
d4 = list(as.Date("2013-5-30"), 1,4)
d = rbind(d1,d2,d3,d4)
colnames(d) <- c("Date", "V1", "V2")
tt = as.data.table(d)
Run Code Online (Sandbox Code Playgroud)
我想运行一个函数,该函数将添加5列(在可能的值范围内,每个可能的值1个)。在每个列中,我都希望在测试日期之前计算该值的出现次数。
例如,2013-5-30的函数输出为C1=0, C2=3, C3=1, C4=1, C5=1。
它计数了多少次:
1出现在之前且不包括5/30,为零
。2出现在之前且不包括5/30,这是三个
。3出现在之前且不包括5/30,这是一个
等。
此外,它还应包括一列,显示该数字占总测量值的百分比。例如5/30,在5/30之前有6次测量,因此
pc1 =(0/6),pc2 = 3/6,pc3 = 1/6,pc4 = 1/6,pc5 = 1/6
我想使用data.table分配符号(:=)将所有这些多列添加到一张照片中。我正在寻找的输出格式如下:
Date V1 V2 C1 PC1 C2 PC2 C3 PC3 C4 PC4 C5 PC5
Run Code Online (Sandbox Code Playgroud) 需要重塑一个data.frame
TestID Machine1Measure Machine1Count Machine2Measure Machine2Count
1 10006 11 14 16 24
2 10007 23 27 32 35
Run Code Online (Sandbox Code Playgroud)
对此:
TestID Machine Measure Count
1 10006 1 11 14
2 10006 2 16 24
3 10007 1 23 27
4 10007 2 32 35
Run Code Online (Sandbox Code Playgroud)
下面是创建每个的代码.看着R中的重塑,但无法弄清楚如何拆分名称
注意:这是列的子集 - 有70-140台机器.我怎样才能使这更简单?
b <-data.frame(10006:10007, matrix(c(11,23,14,27,16,32,24,35),2,4))
colnames(b) <- c("TestID", "Machine1Measure", "Machine1Count", "Machine2Measure", "Machine2Count")
a<-data.frame(matrix(c(10006,10006,10007,10007,1,2,1,2,11,16,23,32,14,24,27,35),4,4))
colnames(a) <- c("TestID", "Machine", "Measure", "Count")
b
a
Run Code Online (Sandbox Code Playgroud)