我正在尝试计算不同网站的数据收集年限。站点标识符是一列,而year列是另一列。可用年份不是连续的,并且收集年份因站点而异。我还想将这些范围值放入另一列。
head(df)
MonitoringLocationIdentifier YEAR
USGS-260753080113901 1999
USGS-260533080123701 1999
USGS-260528080122301 1999
USGS-260521080122401 1999
USGS-260530080112101 1999
USGS-260547080105801 1999
我从data.table包中尝试过:
df$Range <- df[,.(YEAR.Range = range(YEAR)),by=MonitoringLocationIdentifier]
#which returns this error: Error in `[.data.frame`(df, , .(YEAR.Range = range(YEAR)), :
unused argument (by = MonitoringLocationIdentifier)
从dplyr包中我试过了:
df$Range<-df %>% group_by(MonitoringLocationIdentifier) %>% summarise(Range=range(YEAR)) %>%
arrange(Range)
#which returns this error: Error in summarise_impl(.data, dots) :
Column `Range` must be length 1 (a summary value), not 2
谢谢!
答案 0 :(得分:1)
这产生一个2列数据帧,其第二列是给出范围的2列矩阵。没有包使用。
public static function findPrevious($id)
{
return static::where('id', '<', $id)
->orderBy('id', 'desc')
->first();
}
如果您想要一个3列数据框,那么:
ag <- aggregate(DF[2], DF[1], range)
注意:可重复形式的输入数据框do.call("data.frame", ag)
为:
DF