You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stata中生成排除同作物的Lender同国别累计贷款数变量

问题描述

现有贷款级数据结构如下:

Loan  Borrower Lender    Date       Crop     Country  Number
 1       A       X     01/01/20     Coffee     USA      0
 2       B       X     01/02/20     Coffee     USA      0
 3       C       X     01/03/20     Coffee     USA      0
 4       D       X     01/04/20     Coffee     USA      0
 5       E       X     01/05/20     Banana     USA      4
 6       F       X     01/06/20     Banana     USA      4
 7       G       X     01/07/20     Coffee     USA      2
 8       H       X     01/08/20     Orange     USA      7
 9       I       X     01/09/20     Coffee     USA      3
 .       .       .        .            .        .       .
 .       .       .        .            .        .       .

需要创建Number变量,规则如下:

  • 统计贷款发放时,对应放款人(Lender)已发放的累计贷款数(含当前贷款)
  • 仅统计同一国家(Country)内的贷款
  • 排除同一国家内同作物(Crop)的所有贷款

即Number表示:该贷款对应的放款人在同一国家发放的、非当前作物的贷款数量。

尝试过以下代码,但无法实现排除同作物贷款的需求:

bysort Lender Country (Date): gen var = _n 
解决方案

可以通过分步计算累计总数与同作物累计数的差值来实现需求,具体Stata代码如下:

* 1. 将日期字符串转换为Stata可识别的数值型日期(确保按日期排序的准确性)
gen date_num = date(Date, "MDY")
format date_num %td

* 2. 计算同一放款人+国家下,累计到当前贷款的总数量(含当前)
bysort Lender Country (date_num): gen total_all = _n

* 3. 计算同一放款人+国家+作物下,累计到当前贷款的同作物数量(含当前)
bysort Lender Country Crop (date_num): gen total_same_crop = _n

* 4. 总累计数减去同作物累计数,得到目标变量Number
gen Number = total_all - total_same_crop

* (可选)删除中间变量
drop date_num total_all total_same_crop

代码逻辑说明:

  • 转换日期是为了避免字符串日期排序出错;
  • total_all统计了当前放款人在对应国家内,到当前贷款为止的所有累计贷款数;
  • total_same_crop统计了当前放款人在对应国家内,同作物的累计贷款数;
  • 两者的差值正好符合需求:同一国家内非当前作物的累计贷款数。

内容的提问来源于stack exchange,提问作者user19923407

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:01:04