基于两组的R中的分组和总数据

时间:2017-02-15 02:45:06

标签: r dataframe

晚安,

我的数据看起来像这样

FY     Type     Total
2014   State    $5,000
2014   Federal  $2,596
2014   State    $5,123
2014   Federal  $2,567
2013   State    $5,555
2013   Federal  $2,784
2013   State    $5,562
2013   Federal  $2,556

我如何通过FY和R中的类型获得总计?

所以它看起来像:

FY      Type    Total
2013    Federal $5,340
2013    State   $11,117
2014    Federal $5,163
2014    State   $10,123

2 个答案:

答案 0 :(得分:2)

您需要转换为数字以获得总和,然后这是一个简单的聚合。此处public static int computeRecursive(int n){ if(n <= 1){ return n; } else{ return 2 * computeRecursive(n-2) + computeRecursive(n-1); } } 用于临时将transform列转换为数字,原始数据保持不变。

Total

aggregate( Total ~ Type + FY, transform(df, Total = as.numeric(gsub("\\D", "", Total))), sum ) # Type FY Total # 1 Federal 2013 5340 # 2 State 2013 11117 # 3 Federal 2014 5163 # 4 State 2014 10123 输出略有不同。

xtabs

答案 1 :(得分:1)

我们可以使用tidyverse。按“&#39; FY&#39;,&#39;类型&#39;分组后,提取&#39;总计&#39;的数字部分。使用parse_number获取sumpaste$作为前缀

library(tidyverse)
df1 %>%
     group_by(FY, Type) %>% 
     summarise(Total = dollar_format()(sum(parse_number(Total))))
#    FY    Type   Total
#  <int>   <chr>   <chr>
#1  2013 Federal  $5,340
#2  2013   State $11,117
#3  2014 Federal  $5,163
#4  2014   State $10,123

注意:dollar_format来自scalesparse_number来自readrsummarisegroup_by来自dplyr

我们也可以使用rowsum

中的base R
rowsum(as.numeric(gsub("[^0-9.]+", "", df1$Total)), interaction(df1[-3]))