4

私はデータフレームを持っています:

head(df)
     Year          Find             Found
6982 1901          267              246
6983 1901          271              251
6984 1902          317              236
6985 1903          339              244
6986 1904          339              260
6987 1903          345              15
5255 1902           47              45
5256 1901           46              NA
5257 1906           45              150
5258 1905           42              24
5259 1910           42              78
5260 1910           41              NA

私がそれを集約しようとしているとき:

aggdata <-aggregate(df, by=list(Year), 
                  FUN=sum, na.rm=TRUE)

私は得るerror

Error in aggregate.data.frame(AndelKvinnorUttax, by = list(Year), FUN = sum,  : 
  object 'Year' not found

問題が見つからない...

solutionは:

aggr=cbind(aggregate(data=df,Find~Year,
           FUN=sum,na.rm=TRUE),aggregate(data=df,Found~Year,
           FUN=sum,na.rm=TRUE))[,c(1,2,4)]

誰?

よろしくお願いします!

4

2 に答える 2

4

または、「ソリューション」で数式メソッドを使用しているので、実際のソリューションで使用してみませんか?

.「他のすべての変数」を指定するために使用します。

また、formulaメソッドでは、NA値の扱いが異なります。関数とna.rmforを指定する必要があります。sumna.passaggregate

aggregate(. ~ Year, df, sum, na.rm = TRUE, na.action="na.pass")
#   Year Find Found
# 1 1901  584   497
# 2 1902  364   281
# 3 1903  684   259
# 4 1904  339   260
# 5 1905   42    24
# 6 1906   45   150
# 7 1910   83    78

多様性 (およびいくつかの単純な構文) については、もちろん次のdata.tableとおりです。

library(data.table)
DT <- data.table(df)
DT[, lapply(.SD, sum, na.rm=TRUE), by = Year]
#    Year Find Found
# 1: 1901  584   497
# 2: 1902  364   281
# 3: 1903  684   259
# 4: 1904  339   260
# 5: 1906   45   150
# 6: 1905   42    24
# 7: 1910   83    78
于 2013-09-03T13:19:48.647 に答える