求求代码饶了我 2024-03-28 18:04 采纳率: 40%
浏览 6
已结题

state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配

用destring以后还是红色,describe是字符串形式但是无法引用。

img

  • 写回答

9条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-28 18:05
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的Stata命令行输出,问题在于您试图将一个数值型(long)编码变量Trans与字符串类型的值进行比较并赋值给另一个字符串变量trans_new,这在Stata中会导致类型不匹配错误(r(109))。解决此问题的方法是先将编码变量转换为字符串类型,然后进行条件赋值。

    以下是解决此问题的Stata命令:

    // 首先确保原始变量trans是字符串类型
    destring trans, replace force // 如果trans已经是字符串类型,这一步可以忽略
    
    // 创建新的字符串变量trans_new并初始化为缺失值
    gen str1 trans_new = ""
    
    // 使用if条件语句正确地将trans_new替换为指定的字符串
    replace trans_new = "transh" if trans == "A" | trans == "B"
    
    // 继续处理其他条件
    replace trans_new = "transl" if trans == "C" | trans == "D"
    
    // 如果您需要基于编码变量Trans进行操作,先将其转为字符串类型
    encode trans, generate(Trans_str)
    
    // 然后按照新创建的字符串变量Trans_str进行操作(如果需要)
    replace trans_new = "transh" if Trans_str == "1" | Trans_str == "2" // 假设"A"和"B"编码为1和2
    
    // 最后检查数据是否已按预期更新
    describe trans_new
    

    注意:在上述代码中,我假设您已正确对trans进行了编码,且"A"、"B"对应的编码为1、2(这只是一个示例,实际情况请根据您的编码结果调整)。同时,由于trans本身已是字符串类型,所以无需使用destring命令。如果Trans是由trans编码而来,则不需要再次将其转为字符串类型,只需直接根据原始的trans值进行条件赋值即可。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(8条)

报告相同问题?

问题事件

  • 系统已结题 4月5日
  • 已采纳回答 3月28日
  • 创建了问题 3月28日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来