如何从时间序列中提取日期?这是一个时间序列:
x = seq (1, 768)
myts <- ts(x, start=1982, frequency=24)
Run Code Online (Sandbox Code Playgroud)
最初我需要为该rts函数创建一个保存日期/时间数据的向量,观察始于1982年,每月进行2次测量直至2013年.
我有一个包含开始和结束时间的data.frame:
ranges<- data.frame(start = c(65.72000,65.72187, 65.94312,73.75625,89.61625),stop = c(79.72187,79.72375,79.94312,87.75625,104.94062))
> ranges
start stop
1 65.72000 79.72187
2 65.72187 79.72375
3 65.94312 79.94312
4 73.75625 87.75625
5 89.61625 104.94062
Run Code Online (Sandbox Code Playgroud)
在此示例中,第2行和第3行中的范围完全在第1行的"start"和第4行的"stop"之间的范围内.因此,重叠范围1-4应折叠为一个范围:
> ranges
start stop
1 65.72000 87.75625
5 89.61625 104.94062
Run Code Online (Sandbox Code Playgroud)
我试过这个:
mdat <- outer(ranges$start, ranges$stop, function(x,y) y > x)
mdat[upper.tri(mdat)|col(mdat)==row(mdat)] <- NA
mdat
Run Code Online (Sandbox Code Playgroud)
而现在我只需要弄清楚如何结合所有真实的,但不确定它是否是最好的方法
我的数据看起来像这样:
library(plyr)
dates<-data.frame(datecol=as.POSIXct(c(
"2010-04-03 03:02:38 UTC",
"2010-04-03 03:03:14 UTC",
"2010-04-20 03:05:52 UTC",
"2010-04-20 03:07:42 UTC",
"2010-04-21 03:09:38 UTC",
"2010-04-21 03:10:14 UTC",
"2010-04-21 03:12:52 UTC",
"2010-04-23 03:13:42 UTC",
"2010-04-23 03:15:42 UTC",
"2010-04-23 03:16:38 UTC",
"2010-04-23 03:18:14 UTC",
"2010-04-24 03:21:52 UTC",
"2010-04-24 03:22:42 UTC",
"2010-04-24 03:24:19 UTC",
"2010-04-24 03:25:19 UTC"
)), x = cumsum(runif(15)*10),y=cumsum(runif(15)*20))
Run Code Online (Sandbox Code Playgroud)
我想将我的数据分组为5天,因此所有5天或更短时间的点都放在一个组中.我尝试了这里建议的内容:
gr<-ddply(dates,.(cut(datecol,"5 day",include.lowest = TRUE)),"[")
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,我最终得到3组而不是2组,而04/21和04/23的分数分成不同的组,即使它们相隔不到5天.
这是我想得到的:
group datecol x y
1 1 2010-04-03 03:02:38 8.112423 4.790036
2 1 2010-04-03 03:03:14 11.184709 22.903475
3 2 2010-04-20 …Run Code Online (Sandbox Code Playgroud) 有没有办法提取有关.wav文件长度/持续时间的信息,而无需读入R中的文件?我有成千上万的这些文件,如果我必须阅读每一个文件以查找其持续时间,将需要很长时间.Windows文件资源管理器为您提供了打开长度字段的选项,您可以看到文件的持续时间,但有没有办法提取该信息以便能够在R中使用?
这是我尝试过并且想避免做的事情,因为读取R中的数万个音频文件需要很长时间:
library(tuneR)
audio<-readWave("AudioFile.wav")
round(length(audio@left) / audio@samp.rate, 2)
Run Code Online (Sandbox Code Playgroud) 我有一个数据帧df的柱子ID,Year,Value1,Value2,Value3和21788928行。我需要通过Yearand对数据进行子集化ID并找到该Value1子集中的最大值,保存该行的其余信息,我需要对Yearand 的所有组合执行此操作ID(年份从 1982 年到 2013 年,ID 是从 1 到 28371)
我试图在双循环中做到这一点:
year<-seq(1982, 2013)
cnt=1
for (i in 1:32) {
for (j in 1:28371)
A<-df[df$Year==year[i]&df$ID==j,]
maxVal[cnt,]<-A[A$Value1==max(A$Value1),]
cnt=cnt+1
}
}
Run Code Online (Sandbox Code Playgroud)
但这需要很长时间。有没有更有效的方法来做到这一点?也许使用ddply或with。
R 总是使 x 轴比 y 轴更长,即使它们具有相同的限制。是否有控制轴长度的选项?
plot(0:100,0:100)
Run Code Online (Sandbox Code Playgroud)
我需要它是一个正方形。