楼主: torrentpien
2920 8

[问答] 同序号、同年的数据如何相加? [推广有奖]

  • 0关注
  • 3粉丝

已卖:411份资源

硕士生

70%

还不是VIP/贵宾

-

威望
0
论坛币
44793 个
通用积分
83.5763
学术水平
3 点
热心指数
4 点
信用等级
3 点
经验
838 点
帖子
51
精华
0
在线时间
274 小时
注册时间
2009-11-28
最后登录
2025-9-5

楼主
torrentpien 学生认证  发表于 2015-8-26 06:14:35 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我有一组数据,结构如下:

ID    Year    data
A3405533    2014    29
A3405533    2014    17
A3405533    2013    23.6
A3500131    2014    7.4
A3600190    2014    12.5
A3600190    2014    5.4
A3600190    2013    21.3
A3600190    2013    8
A3600190    2013    3.7
A3600190    2013    11.6
A3600190    2012    14.05
A3600190    2012    10.5
A3701656    2014    20.2
A3701656    2013    4.3

请问我要将相同序号、同一年的数据加总起来,成为以年度为单位的panel data,如下面的显示,不知道该怎么处理?

ID    Year    data
A3405533    2014    46
A3405533    2013    23.6
A3500131    2014    7.4
A3600190    2014    17.9
A3600190    2013    44.6
A3600190    2012    24.55
A3701656    2014    20.2
A3701656    2013    4.3
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:panel data Panel Data year 怎么处理 如何

沙发
zyonline1981 发表于 2015-8-26 07:21:34 来自手机
bys id year: egen a=sum(b)
duplicates drop  id year force

藤椅
zyonline1981 发表于 2015-8-26 07:23:13 来自手机
不好意思,force前面加逗号。

板凳
torrentpien 学生认证  发表于 2015-8-26 07:57:13
zyonline1981 发表于 2015-8-26 07:21
bys id year: egen a=sum(b)
duplicates drop  id year force
多谢回覆,但这个是stata的指令吧?

报纸
jinkelazzz 发表于 2015-8-26 08:15:08
> id<-c("A3405533","A3405533","A3600190","A3600190")
> year<-c(2014,2014,2014,2013)
> data<-c(27,19,10,12)
> fctr<-factor(paste(id,year))
> tapply(data,fctr,sum)
A3405533 2014 A3600190 2013 A3600190 2014
           46            12            10

地板
qiangli 发表于 2015-8-26 08:36:43
  1. rm(list=ls())
  2. data <- read.table(header = TRUE, text = "
  3. ID    Year    data
  4. A3405533    2014    29
  5. A3405533    2014    17
  6. A3405533    2013    23.6
  7. A3500131    2014    7.4
  8. A3600190    2014    12.5
  9. A3600190    2014    5.4
  10. A3600190    2013    21.3
  11. A3600190    2013    8
  12. A3600190    2013    3.7
  13. A3600190    2013    11.6
  14. A3600190    2012    14.05
  15. A3600190    2012    10.5
  16. A3701656    2014    20.2
  17. A3701656    2013    4.3
  18. ")


  19. data1  <- aggregate(data ~ ID + Year,  data = data, FUN = "sum")
  20. data1[order(data1$ID, data1$Year),]
复制代码





> rm(list=ls())
> data <- read.table(header = TRUE, text = "
+ ID    Year    data
+ A3405533    2014    29
+ A3405533    2014    17
+ A3405533    2013    23.6
+ A3500131    2014    7.4
+ A3600190    2014    12.5
+ A3600190    2014    5.4
+ A3600190    2013    21.3
+ A3600190    2013    8
+ A3600190    2013    3.7
+ A3600190    2013    11.6
+ A3600190    2012    14.05
+ A3600190    2012    10.5
+ A3701656    2014    20.2
+ A3701656    2013    4.3
+ ")
>
>
> data1  <- aggregate(data ~ ID + Year,  data = data, FUN = "sum")
> data1[order(data1$ID, data1$Year),]
        ID Year  data
2 A3405533 2013 23.60
5 A3405533 2014 46.00
6 A3500131 2014  7.40
1 A3600190 2012 24.55
3 A3600190 2013 44.60
7 A3600190 2014 17.90
4 A3701656 2013  4.30
8 A3701656 2014 20.20
>



已有 1 人评分经验 论坛币 收起 理由
李会超 + 80 + 10 精彩帖子

总评分: 经验 + 80  论坛币 + 10   查看全部评分

7
ntsean 发表于 2015-8-26 10:08:52
  1. library(dplyr)
  2. group_by(your data, ID, Year) %>% summarise(data = sum(data))
复制代码
已有 1 人评分论坛币 收起 理由
李会超 + 10 dplyr包是神包

总评分: 论坛币 + 10   查看全部评分

8
torrentpien 学生认证  发表于 2015-8-26 10:21:14
qiangli 发表于 2015-8-26 08:36
> rm(list=ls())
> data  
>
多谢!我已经用上面的coding做出表格,还想请教一个问题,如果我原本的栏位有多一栏,像这样:

ID        Year        data        locate
A3405533        2014        29        A
A3405533        2014        17        A
A3405533        2013        23.6        A
A3500131        2014        7.4        B
A3600190        2014        12.5        C
A3600190        2014        5.4        C
A3600190        2013        21.3        C
A3600190        2013        8        C
A3600190        2013        3.7        C
A3600190        2013        11.6        C
A3600190        2012        14.05        C
A3600190        2012        10.5        C
A3701656        2014        20.2        D
A3701656        2013        4.3        D

要做出这样:

ID        Year        data        locate
A3405533        2014        46        A
A3405533        2013        23.6        A
A3500131        2014        7.4        B
A3600190        2014        17.9        C
A3600190        2013        44.6        C
A3600190        2012        24.55        C
A3701656        2014        20.2        C
A3701656        2013        4.3        D

我用这个指令是否正确?因为locate只是我仍然想要放入的资讯,并不是要整合计算的标准,如果放在+后面,会不会有计算错误的情形?
  1. data1  <- aggregate(data ~ ID + Year + locate,  data = data, FUN = "sum")
复制代码

9
qiangli 发表于 2015-8-28 10:14:10
你自己试试就可以了

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 06:21