2017-07-15 5 views
-1

異なるサイトのデータ収集年数を計算しようとしています。サイト識別子は1つの列で、年の列は別の列です。利用可能な年数は連続ではなく、収集年数はサイトによって異なります。私はまた、これらの範囲の値を別の列に入れたいと思っています。Rの追加列のIDに基づく別の列の範囲の列の計算と作成

head(df) 
MonitoringLocationIdentifier YEAR 
    USGS-260753080113901  1999 
    USGS-26053308
    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

これは2列目のデータフレームを生成し、2列目のデータフレームは範囲を与える2列の行列になります。パッケージは使用されません。あなたはその後、3列のデータフレームをしたい場合は

ag <- aggregate(DF[2], DF[1], range) 

do.call("data.frame", ag) 

注:再現可能な形で入力されたデータフレームDFは次のとおりです。

Lines <- "MonitoringLocationIdentifier YEAR 
USGS-260753080113901  1999 
USGS-26053308
USGS-260528080122301  1999 
USGS-260521080122401  1999 
USGS-260530080112101  1999 
USGS-260547080105801  1999" 
DF <- read.table(text = Lines, header = TRUE, as.is = TRUE) 
関連する問題