Group_by HS.Code = 8个字符

时间:2018-06-18 12:24:37

标签: r

我正在尝试找到一种方法来对按照HS编码(产品的协调编码)分组的导入值进行分组。我有一个数据集,其中包含HS10产品的进口值;我想对行进行求和并将数据集转换为HS8的Import值副产品。 HS10表示使用的代码长度为10个字符,HS8表示使用的代码长度为8个字符。在重写一个新函数来解决这个问题之前,我想知道是否有一些软件包可以解决我的问题。

Below is a little Head of my dataset:
> head(tun)
   HS.code10 Import
1 1022110000      0
2 1022110005   1051
3 1022999026  19126
4 1041030017   1289
5 1051119007    134
6 1051191000      0

期望的结果是:

> head(tun)
  HS.code8   Import
1 10221100     1051
2 10229990    19126
3 10410300     1289
4 10511190      134
5 10511910        0

我尝试了Group_by并从dplyr包中总结但没有成功

1 个答案:

答案 0 :(得分:0)

您可以在调用HS.code10aggregate sum值时提取Import的前8个字符。

agg <- aggregate(Import ~ substr(HS.code10, 1, 8), tun, sum)
names(agg)[1] <- "HS.code8"
agg
#  HS.code8 Import
#1 10221100   1051
#2 10229990  19126
#3 10410300   1289
#4 10511190    134
#5 10511910      0

数据。

tun <-
structure(list(HS.code10 = c(1022110000L, 1022110005L, 1022999026L, 
1041030017L, 1051119007L, 1051191000L), Import = c(0L, 1051L, 
19126L, 1289L, 134L, 0L)), .Names = c("HS.code10", "Import"), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6"))