R 计算两个向量的嵌套子集的最大值和最小值之间的差值
我有一个大约900行的数据帧(见下面的简化示例)。我试图估算每年每捕鲸的最大(doy)–最小(doy)值。我需要按whaleID和year返回doy差异的对象(例如表)。一个挑战是,并非每年都有两次“昏昏欲睡”的观察。我尝试过使用“dplyr”、aggregate()和生成循环(我还没有设计能力)。如果可能的话,我想通过使用基地来实现这一点,但是我会全神贯注地听取关于这一点的任何建议,谢谢R 计算两个向量的嵌套子集的最大值和最小值之间的差值,r,loops,nested,R,Loops,Nested,我有一个大约900行的数据帧(见下面的简化示例)。我试图估算每年每捕鲸的最大(doy)–最小(doy)值。我需要按whaleID和year返回doy差异的对象(例如表)。一个挑战是,并非每年都有两次“昏昏欲睡”的观察。我尝试过使用“dplyr”、aggregate()和生成循环(我还没有设计能力)。如果可能的话,我想通过使用基地来实现这一点,但是我会全神贯注地听取关于这一点的任何建议,谢谢 whaleID<-c(31,4,5,65,31,4,4,4,31,5) year<-c(201
whaleID<-c(31,4,5,65,31,4,4,4,31,5)
year<-c(2010, 2010, 2010, 2011, 2011, 2011, 2011, 2011, 2011, 2011)
doy<-c(65,71,88,67,77,78,81,82,88,88)
whaleID您可以使用aggregate()
并从range()
中减去值:
whaleIDI在这种情况下,doy只有一行
如何计算差异?它应该是0还是相同的单个值?你能显示给定数据的预期输出吗?我不确定我是否遗漏了什么,但这不是聚合(doy~whaleID+年份,df,函数(x)差异(范围(x))
?@Ronaksha是的,这是等效的。我个人喜欢by
语法与公式语法,但我想这是风格的问题diff(range(x))
我认为这是一个改进,将更新到该选项
whaleID<-c(31,4,5,65,31,4,4,4,31,5)
year<-c(2010, 2010, 2010, 2011, 2011, 2011, 2011, 2011, 2011, 2011)
doy<-c(65,71,88,67,77,78,81,82,88,88)
dfx <- data.frame(whaleID, year, doy)
aggregate(dfx$doy, by = list(whaleId = dfx$whaleID, year = dfx$year),
FUN = function(x) diff(range(x)))
whaleId year x
1 4 2010 0
2 5 2010 0
3 31 2010 0
4 4 2011 4
5 5 2011 0
6 31 2011 11
7 65 2011 0