根据R中附加列的ID计算和创建另一列范围的列

时间:2017-07-15 19:38:09

标签: r

我正在尝试计算不同网站的数据收集年限。站点标识符是一列,而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

谢谢!

1 个答案:

答案 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