2017-02-28 35 views
-1

我想汇总这个数据框,其中每个Family Size有六个类别,Hours Worked。所有的多个条件下的聚合列

families <- structure(list(`Family Size` = c(2L, 2L, 2L, 2L, 2L, 2L, 2L,13L, 13L, 13L), HoursLess20 = c("1,014", "1,041", "11", "3","1", "2", "1", "0", "0", "0"), Hours2024 = c(7L, 298L, 1L, 0L,0L, 0L, 0L, 0L, 0L, 0L), Hours2529 = c(1L, 34L, 0L, 0L, 0L, 0L,0L, 0L, 0L, 0L), Hours3034 = c(6L, 44L, 1L, 0L, 0L, 0L, 0L, 0L,0L, 0L), Hours3539 = c(4L, 46L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Hours40plus = c(9L, 128L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("Family Size","HoursLess20", "Hours2024", "Hours2529", "Hours3034", "Hours3539","Hours40plus"), row.names = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 1977L,1978L, 1979L), class = "data.frame") 
+0

你想如何聚合?总和?平均? – G5W

回答

1

首先,您目前拥有的值HoursLess20为字符串 (因为逗号)。要进行任何类型的数值聚合,您需要删除逗号并将其转换为数字。

families$HoursLess20 = as.numeric(gsub(",", "", families$HoursLess20)) 

一旦你这样做,你可以只使用聚合函数 创造任何你想要的集合体。

## Sum 
aggregate(families[,-1], list(families[,1]), sum) 
    Group.1 HoursLess20 Hours2024 Hours2529 Hours3034 Hours3539 Hours40plus 
1  2  2073  306  35  51  50   138 
2  13   0   0   0   0   0   0 

## Average 
aggregate(families[,-1], list(families[,1]), mean) 
    Group.1 HoursLess20 Hours2024 Hours2529 Hours3034 Hours3539 Hours40plus 
1  2 296.1429 43.71429   5 7.285714 7.142857 19.71429 
2  13  0.0000 0.00000   0 0.000000 0.000000  0.00000 
+0

我不知道为什么会发生这种情况,但是当我将它复制为SO时肯定发生了,但谢谢。 –