错误:没有要汇总的行

时间:2016-05-07 16:25:32

标签: r

我正在处理两个数据框,第二个是df2,是单列,包含变量的名称,第一个,df1 ,是一个多列(超过1000),包含每个变量的数值。

VAL1 <- c("AA", "BB", "CC", "DD", "BB", "DD", "AA", "DD")
Num1 <- c(1, 2, 1, 3, 4, 4, 6, 2) 
Num2 <- c(3, 3, 2, 1, 1, 2,4, 4) 
Num3 <- c(2, 2, 3, 4, 3, 5, 5, 7) 
df <- data.frame(VAL1, Num1, Num2, Num3)
df1<-df[,-1] 
df2<- df1[1]

df1上,我做了以下操作:

tot<- colSums(df1,na.rm = TRUE)
prod<- df1/rep(tot,each = nrow(df1))

在此操作之后,我联合了df1df2

df3<-cbind(df2, prod)

作为上一个操作,我想按第一列名称(val1)

聚合数据
agg<- aggregate(. ~  val1, df3, sum)

但是执行此操作控制台会出现以下错误:

Error in aggregate.data.frame(lhs,mf[-1L],FUN=FUN,...): no rows to aggregate.

我在聚合之前控制了df3,但这正是我想要的:

  Val1  Num1  Num2 ....
  AA      2     3
  AA      1     5
  BB      3     3 
  BB      7     8
  CD      4     5
  ...   ...   ...

2 个答案:

答案 0 :(得分:2)

理解您想要计算的内容并不太难。但是你原来的帖子不是以读者友好的方式制作的;特别是,不可重复。我通过仔细的重组编辑了,但发现我不能产生你在那里的错误。我得到的错误实际上是var1 is not found

无论如何,以下代码可以满足您的期望:

VAL1 <- c("AA", "BB", "CC", "DD", "BB", "DD", "AA", "DD")
Num1 <- c(1, 2, 1, 3, 4, 4, 6, 2) 
Num2 <- c(3, 3, 2, 1, 1, 2,4, 4) 
Num3 <- c(2, 2, 3, 4, 3, 5, 5, 7) 
df <- data.frame(VAL1, Num1, Num2, Num3)
df1 <- df[,-1]
## you should not put df2 <- df1[1], but use df2 <- df[1]
## because variable names are stored in the 1st col of "df"
df2 <- df[1]
tot <- colSums(df1, na.rm = TRUE)
prod <- df1 / rep(tot,each = nrow(df1))
df3 <- cbind(df2, prod)
## use "VAL1", not "val1", as this is the column name used in "df3"
## you can check column names by "colnames(df3)"
agg <- aggregate(. ~  VAL1, df3, sum)

注释行突出显示了实施中的错误/拼写错误。

答案 1 :(得分:0)

我到达这里时遇到了同样的错误(Error in aggregate.data.frame(lhs,mf[-1L],FUN=FUN,...): no rows to aggregate.),但是我的问题不同。

我的电话就像

df2 = aggregate(. ~ mycolname, data=df1, FUN=mean)

问题是我的专栏之一仅包含NA。我通过添加na.action=na.pass(在我的情况下是相关的)解决了该错误。