我有一个文件(位置)有一个x,y坐标和一个日期/时间标识.我想从第二个表(天气)中获取具有"相似"日期/时间变量和共变量(温度和风速)的信息.诀窍是两个表中的日期/时间不完全相同.我想选择距离位置数据最近的天气数据.我知道我需要做一些关于它的循环.
Example location example weather
x y date/time date/time temp wind
1 3 01/02/2003 18:00 01/01/2003 13:00 12 15
2 3 01/02/2003 19:00 01/02/2003 16:34 10 16
3 4 01/03/2003 23:00 01/02/2003 20:55 14 22
2 5 01/04/2003 02:00 01/02/2003 21:33 14 22
01/03/2003 00:22 13 19
01/03/2003 14:55 12 12
01/03/2003 18:00 10 12
01/03/2003 23:44 2 33
01/04/2003 01:55 6 22
Run Code Online (Sandbox Code Playgroud)
因此,最终输出将是具有与位置数据正确"最佳"匹配的天气数据的表
x y datetime datetime temp wind
1 3 01/02/2003 18:00 ---- 01/02/2003 16:34 10 …
Run Code Online (Sandbox Code Playgroud) 我有一个数据集我想删除4个不同列中具有重复信息的数据行.
foo<- data.frame(g1 = c("1","0","0","1","1"), v1 = c("7","5","4","4","3"), v2 = c("a","b","x","x","e"), y1 = c("y","c","f","f","w"), y2= c("y","y","y","f","c"), y3 = c("y","c","c","f","w"), y4= c("y","y","f","f","c"), y5=c("y","w","f","f","w"), y6=c("y","c","f","f","w"))
Run Code Online (Sandbox Code Playgroud)
foo然后看起来像:
g1 v1 v2 y1 y2 y3 y4 y5 y6
1 1 7 a y y y y y y
2 0 5 b c y c y w c
3 0 4 x f y c f f f
4 1 4 x f f f f f f
5 1 3 e w c w …
Run Code Online (Sandbox Code Playgroud) 这必须是一个简单的答案.我想将我的数据子集用于测试目的.我有一个数据框,我想保留所有信息列,只需简单地减少每个人的观察数量.所以,我有一个独特的标识符和大约50个人.我想只选择2个AND,我想从这2个中仅选择500个数据点.
我的数据框被调用wloc08
.有50个唯一ID.我只接受其中2个,但是那些2个,我只想要每个500个数据点.
subwloc08=subset(wloc08, subset = ID %in% c("F07001","F07005"))
Run Code Online (Sandbox Code Playgroud)
在这个声明的某处可以使用[
吗?
reduced= subwloc08$ID[1:500,]
Run Code Online (Sandbox Code Playgroud)
不行.
这看起来应该非常简单.在R中有2个不等长度的数据帧.1只是较大数据集的随机子集.因此,它们具有完全相同的精确数据和唯一ID.我想做的是在较大的数据集中放置一个指示0或1的指示符,表示该行位于较小的数据集中.
我可以使用,which(long$UniqID %in% short$UniqID)
但我似乎无法弄清楚如何将此指标与长数据集匹配
我想仅在值> 0时计算累积平均值.如果我有一个矢量:
v <- c(1, 3, 0, 3, 2, 0)
Run Code Online (Sandbox Code Playgroud)
平均值是9/6 = 1.5,但是我只想在值> 0时取平均值,因此在这种情况下它将是9/4 = 2.25.但是这个平均值是整个集合.我希望在数据集构建和累积时进行平均.所以,最初它将是:
1+3/2, 1+3+0/2, 1+3+0+3/3, 1+3+0+3+2/4, 1+3+0+3+2+0/4
Run Code Online (Sandbox Code Playgroud)
我的数据集是9,000行,而且还在增长.我可以开始cumsum
工作并计算累积总和,但不计算"成功"的累积平均值.
我遇到了一个具有挑战性的问题,并希望得到一些建议.我有活动数据,我想以图形方式显示,我正在寻找可用于解决我的问题的包或程序(最好是R).
数据是Activity
每小时()收集的运动计数(Time of day
)持续3周(Calendar Date
)或更多与相关变量(Food
/ Vegetation
).
通常情况下,正如我所知,数据可以在一个名为Clocklab的程序中处理和绘制,这是一个Matlab产品.然而,增加的复杂性是希望根据饲喂组的分类绘制该数据.我试图在R中找到一个公平的程序/包,但是已经很短了.
数据看起来很简单:
Activity time of day Food type Calendar Date
0 01:00 B 03/24/2007
13 02:00 --- 03/24/2007
0 03:00 B 03/24/2007
0 04:00 B 03/24/2007
: : : :
1246 18:00 C 03/24/2007
3423 19:00 C 03/24/2007
: : : :
0 00:00 --- 03/25/2007
Run Code Online (Sandbox Code Playgroud)
这个数据是昼夜节律,循环,活动预算,我希望有一个可能是3-D的图表,它将显示饮食选择以及与该饮食相关的多少活动随着时间的推移绘制多天/周.我会通过个人然后在人口水平上做到这一点.我已经通过程序Clocklab通常生成的程序和示例图的链接.
我想产生具有堆叠在堆叠区通过HR(60和90)通过一年的季节(夏季和冬季)的棒图.基本上沿X轴,我希望我的两个HR尺寸(60和90)并排,但按年份分组(2003年,2004年,2005年等).然后两个赛季的区域叠加在一起.
Year Season HR Area
2003 summer 60 13419.50953
2004 summer 60 13825.55977
2005 summer 60 13628.62486
2006 summer 60 13098.44875
2003 summer 90 25836.8865
2004 summer 90 29908.79986
2005 summer 90 31709.97851
2006 summer 90 27996.521
2003 Winter 60 5622.281258
2004 Winter 60 9270.272772
2005 Winter 60 11299.37334
2006 Winter 60 15359.69352
2003 Winter 90 14500.94848
2004 Winter 90 27264.27162
2005 Winter 90 26040.42253
2006 Winter 90 38532.49895
Run Code Online (Sandbox Code Playgroud) 我有一个栅格堆栈,里面有27个栅格.我在空间多边形数据框中有27个相应的多边形.我想将多边形[i]覆盖在栅格[i]上,从栅格[i]中提取和求和,得到多边形[i]中的单元格数,然后将和值除以#细胞 换句话说,栅格是利用率分布或核心使用密度.我想知道在多边形区域中发生了很多用途,它与栅格重叠.我想除以多边形中的单元格数来考虑多边形的大小.
我有一个脚本给我这样做,只是它的目的是从数据框中的任意数量的空间多边形中提取1个栅格中的数据.它工作,它的丑陋,我现在想将它转换为更流线的东西.我只希望我周围有人可以提供帮助,因为这可能需要一段时间?
这是我给出的代码以及我对我的想法的总结:
msum99Kern07 = SpatialPolygonDataFrame (many polygons)
KERNWolfPIX07m = Raster (this is a single raster, I have 27 rasters I put into a stack
Run Code Online (Sandbox Code Playgroud)
)
#Extracting value from raster to many polygons
sRISK_Moose07m<- extract(KERNWolfPIX07m, msum99Kern07,df=FALSE,method='bilinear')
#Calculate THE SUM FOR EACH polygon#
sRISK_Moose07m<-unlist(lapply(sRISK_Moose07m, function(x) if (!is.null(x)) sum(x, na.rm=TRUE) else NA ))
sRISK_Moose07m<-as.data.frame(sRISK_Moose07m)
#Im not sure why these next commands are needed Im only guessing
#data.frame(levels) as there are many polygons creating a dataframe to put the info into
ID_SUM_07<-as.data.frame(levels(as.factor(msum07locs$ID2))) …
Run Code Online (Sandbox Code Playgroud) 在被推荐使用adehabitat来计算交叉口的数量后,我偶然发现了一个轻微(希望很简单)的问题.在这个库中我使用kerneloverlap命令,因为我需要计算交集的体积.我想知道你是否可以帮我解决一些编程问题.我需要修改脚本,使其"批量"处理友好.我知道R足以让自己陷入麻烦并失去头发,因为我知道某些事情应该是可能的,但却无法弄明白如何让它发挥作用.
命令很简单:
kerneloverlap(loc[,c("X","Y")], loc$year, lev = 90, grid=30, meth="VI", conditional=TRUE)
Run Code Online (Sandbox Code Playgroud)
从数据文件中取出x,y坐标的年份,并计算在90的利用率分布中网格单元格大小为30的交叉体积.
输入文件(见下文摘录)是anid,X,Y,year和seasons.对于这个例子,只有一个赛季(请记住我有3个赛季).对于这个例子,我想在每个单独的交叉量之间的1个季节之间进行比较.所以测试数据有2年1个季节和2个人.我想说的是"在2003至2004年的产犊季节,动物1的交叉口的体积为0.8,这表明高度重叠和对一个地点的保真度".
我还想比较季节.这使得动物1在其2003年夏季和越冬季节的交叉量为0.04,这表明重叠程度低且对该位置没有保真度.
需要注意的一点是:并非所有人每年都在场,或者每个赛季都活着.因此可能需要某种低级别.
到目前为止这是我的R脚本(它不起作用).请注意,输出也没有很好地连接在一起,我似乎无法获得编译文件.我喜欢它告诉我它与比较事物的年份,个人或季节.
IDNames= levels(loc$anid)
Year = unique(loc$year)
for (i in 1:(length(IDNames))){
vi90 = kerneloverlap(loc[,c("X","Y")], loc$year, lev = 90, grid=30, meth="VI", conditional=TRUE)
}
colnames(vi)= c(paste(IDNames[i],Year[n], sep =""),paste(IDNames[i], Year[n], sep =""))
}
write.csv(vi,"VolInter_indiv.csv")
structure(list(anid = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, …
Run Code Online (Sandbox Code Playgroud)