楼主: 飞天玄舞6
992 8

[问答] 求教一个赋值问题 [推广有奖]

  • 3关注
  • 31粉丝

VIP1

已卖:3014份资源

学科带头人

13%

(VIP/贵宾)十级

28%

TA的文库  其他...

综合文库

威望
0
论坛币
153870 个
通用积分
4226.5233
学术水平
128 点
热心指数
148 点
信用等级
102 点
经验
76635 点
帖子
1502
精华
0
在线时间
1519 小时
注册时间
2013-12-2
最后登录
2025-11-25

楼主
飞天玄舞6 在职认证  发表于 2016-12-23 22:08:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有数据为dat为
  var1 var2 var3
1    2    8    L
2   NA    6    L
3    3   NA    L
4    5    5    K
5   NA   NA    K
6   NA    5    K
我想按照var3中的变量来修改var1中的NA值
if(dat$var3=="L" && dat$var1=="NA")  dat$var1 <- 1
这样为什么修改不了呢。
二维码

扫码加我 拉你入群

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

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

关键词:VaR

strive for the best, prepare for the worst.

沙发
zerofung 学生认证  发表于 2016-12-24 00:44:48
没有试你的代码,但是觉得应该有两个地方值得注意:1.判断NA值不能用 =="NA", 而要用 is.na(),除非那一列是字符串。 2. R里的if,是只接受一个长度的condition的,即其condition不支持向量化(具体查看?Control)。也许ifelse能帮到你。
已有 1 人评分论坛币 收起 理由
jiangbeilu + 10 鼓励积极发帖讨论

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

藤椅
机械唯物主义123 发表于 2016-12-24 01:46:33
val1[is.na(val1)==T]=val3[which(is.na(val1)==T,arr.ind=TRUE)]##试试,不谢
已有 1 人评分论坛币 收起 理由
jiangbeilu + 5 鼓励积极发帖讨论

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

板凳
飞天玄舞6 在职认证  发表于 2016-12-24 09:50:36
zerofung 发表于 2016-12-24 00:44
没有试你的代码,但是觉得应该有两个地方值得注意:1.判断NA值不能用 =="NA", 而要用 is.na(),除非那一列 ...
谢谢

报纸
飞天玄舞6 在职认证  发表于 2016-12-24 09:52:33
机械唯物主义123 发表于 2016-12-24 01:46
val1=val3[which(is.na(val1)==T,arr.ind=TRUE)]##试试,不谢
谢谢,昨天我试了 for(i in 1:7){
     if(is.na(dat$var1) && dat$var3=="K") dat$var1 <- 0
},不行,今天再一试又可以了

地板
飞天玄舞6 在职认证  发表于 2016-12-24 09:58:57
飞天玄舞6 发表于 2016-12-24 09:52
谢谢,昨天我试了 for(i in 1:7){
     if(is.na(dat$var1) && dat$var3=="K") dat$var1
对里面每一个var进行循环寻找

7
机械唯物主义123 发表于 2016-12-24 15:36:04
飞天玄舞6 发表于 2016-12-24 09:52
谢谢,昨天我试了 for(i in 1:7){
     if(is.na(dat$var1) && dat$var3=="K") dat$var1
不用写轮子,就我回复那条代码估计就行

8
飞天玄舞6 在职认证  发表于 2016-12-24 18:23:33
机械唯物主义123 发表于 2016-12-24 15:36
不用写轮子,就我回复那条代码估计就行
我的数据比较多,这个只是我仿制的小数据

9
cheetahfly 在职认证  发表于 2016-12-26 17:53:04
dat$var3 == "L" 返回的是一个逻辑向量
is.na(dat$var1) 返回的也是一个逻辑向量
两个向量用“&&”连接,返回的是整个判断的第一个值,是个标量,而且还不变。
dat$var1[is.na(dat$var1) & dat$var3 == "L"] <- 1
dat$var1[is.na(dat$var1) & dat$var3 == "K"] <- 0

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-6 07:29