楼主: yu9954
613 2

[有偿编程] if else语句运行结果错误 [推广有奖]

  • 0关注
  • 1粉丝

大专生

73%

还不是VIP/贵宾

-

威望
0
论坛币
820 个
通用积分
2.0765
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
660 点
帖子
35
精华
0
在线时间
50 小时
注册时间
2018-11-22
最后登录
2023-10-23

10论坛币
有如下表格
Screen Shot 2021-10-20 at 7.29.52 PM.png

那么此表格中 加上一列参数 参数名为NS_inv,

如果intervention_code 的前两个字符等于 “1A”,那么此参数赋值为TRUE,如果不等于1A,那么赋值为FALSE
我的CODE如下,可是发现所有NS_inv的所有值都是TRUE,请教一下问题出现在哪里

if("1A" %in% substr(SDH_inv$intervention_code,1,2)) {
  SDH_inv$NS_inv=TRUE} else {
    SDH_inv$NS_inv=FALSE

}

Screen Shot 2021-10-20 at 7.23.04 PM.png (117.65 KB)

Screen Shot 2021-10-20 at 7.23.04 PM.png

最佳答案

s609078902 查看完整内容

你这代码的意思是 substr(xx, 1, 2) 构成的向量里是否有 "1A" 这个元素,如果有就把 NS_inv 列赋值全为 TRUE。也就是说你的代码是对整个数据集进行的操作,而你需要的是对每行分别进行判断和赋值,所以代码可以改成:
关键词:else LSE ELS intervention SUBSTR
沙发
s609078902 发表于 2021-10-21 07:33:11 |只看作者 |坛友微信交流群
你这代码的意思是 substr(xx, 1, 2) 构成的向量里是否有 "1A" 这个元素,如果有就把 NS_inv 列赋值全为 TRUE。也就是说你的代码是对整个数据集进行的操作,而你需要的是对每行分别进行判断和赋值,所以代码可以改成:
  1. library(dplyr)
  2. data %>%
  3.     mutate(NS_inv = ifelse(substr(intervention_code, 1, 2) == "1A", TRUE, FALSE))
复制代码

已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

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

使用道具

藤椅
yu9954 发表于 2021-10-21 07:33:56 |只看作者 |坛友微信交流群
请自动忽略第二个表格

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 11:24