生成一个变量,该变量是另一个变量的两个值之比

问题描述

我有一个单独的横截面数据集。观察结果是属于一个家庭的个人,而这个家庭又是一个家庭的一部分。一个家庭可以有一个或多个家庭。

我的目标是通过将男人的家务时间除以伴侣的时间来获得每周家务时间的性别比例。

如果个人是家庭的主要成员(女人),变量v31为1,而个人为丈夫的变量v4为2。

变量v32是家庭ID。

变量clear input obs v4 v32 v31 v850 1 1 1 1 27 2 1 1 2 12 3 2 1 2 8 4 2 1 1 41 5 3 1 2 0 6 4 1 1 29 7 4 1 2 11 8 4 2 1 37 9 4 2 2 1 end list 是家庭中家庭的累进数,如果是家庭的第一个家庭,则为1,如果是第二个家庭,则为2,依此类推。

代码示例:

domwork_ratio

通过查看上面的数据示例,我的目标是拥有一个名为v32的新变量,例如,对于第1行和第2行,其男性伴侣和女性伴侣的家务时间比例,即为12/27。由于它们属于相同的家庭v4和相同的家庭bysort v4 v32 v16: gen domwork_ratio = cond(v4 != v4[_n-1],999999,v850_tot[_n-1]/v850_tot) ,因此对于这两个观测值将具有相同的值。

我不知道如何告诉Stata这样做,以使每个丈夫的家务时间除以伴侣的时间。

我尝试使用以下命令:

const path = require('path');

module.exports = {
  "stories": [
    "../stories/**/*.stories.mdx","../stories/**/*.stories.@(js|jsx|ts|tsx)"
  ],"addons": [
    "@storybook/addon-links","@storybook/addon-essentials",'@storybook/addon-jest','@storybook/addon-knobs','@storybook/addon-storysource',],webpackFinal: async (config,{ configType }) => {
    // `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION'
    // You can change the configuration based on that.
    // 'PRODUCTION' is used when building the static version of storybook.

    // Make whatever fine-grained changes you need
    config.module.rules.push({
      test: /\.(scss|less|css)$/,use: ['style-loader','css-loader','sass-loader'],});
    config.resolve.modules = ["node_modules",path.resolve(__dirname,"../app")];
    // Return the altered config
    return config;
  }
}

但是由于某种原因,创建的变量具有唯一的值999999。

解决方法

感谢数据示例。

clear

input obs v4 v32 v31 v850
1 1 1 1 27
2 1 1 2 12
3 2 1 2 8
4 2 1 1 41
5 3 1 2 0
6 4 1 1 29
7 4 1 2 11
8 4 2 1 37
9 4 2 2 1
end

bysort  v32 v4 (v31) : gen ratio = v850[2] / v850[1] if v31[1] == 1 & v31[2] == 2 

list,sepby(v32 v4)

    +----------------------------------------+
     | obs   v4   v32   v31   v850      ratio |
     |----------------------------------------|
  1. |   1    1     1     1     27   .4444444 |
  2. |   2    1     1     2     12   .4444444 |
     |----------------------------------------|
  3. |   4    2     1     1     41   .1951219 |
  4. |   3    2     1     2      8   .1951219 |
     |----------------------------------------|
  5. |   5    3     1     2      0          . |
     |----------------------------------------|
  6. |   6    4     1     1     29   .3793103 |
  7. |   7    4     1     2     11   .3793103 |
     |----------------------------------------|
  8. |   8    4     2     1     37    .027027 |
  9. |   9    4     2     2      1    .027027 |
     +----------------------------------------+

失败的代码引用变量v16,您没有在问题中解释。但是它的失败可以解释。该框架包括by v4 v16:,并且在如此定义的组内v4v16是恒定的。然后,这些小组由单个观察组成。对于每个组中的第一个也是唯一的观察结果,确实v4不等于v4[_n-1],因为v4[0]返回为丢失。因此,据报告,总是返回999999。 (就Stata编程风格而言,缺少返回系统将是一个更好的主意。)

,

作为另一种可能的解决方案,建议我使用以下代码:

by v4 v32 (v31),sort: assert _N <= 2
by v4 v32 (v31): gen domworkratio = v850_tot[2]/v850_tot[1]

它的结果应该与尼克建议的代码相同,我在这里发布它只是为了提供另一种可能性。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...