楼主: king64
22014 2

[问答] 请教:如何给依据某一列的值给另外一列赋值? [推广有奖]

  • 1关注
  • 11粉丝

已卖:1336份资源

副教授

31%

还不是VIP/贵宾

-

威望
0
论坛币
1139 个
通用积分
119.2433
学术水平
48 点
热心指数
54 点
信用等级
42 点
经验
8328 点
帖子
318
精华
0
在线时间
1159 小时
注册时间
2008-2-7
最后登录
2023-7-17

楼主
king64 发表于 2016-2-23 00:27:58 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
矩阵Dat如下(实际行数和列数很多,100万*20)
ID01 ID02 ID03 ID04 ID05
[1,] 1 9423 1949 0 110
[2,] 1 9720 2000 0 190
[3,] 1 8920 1996 0 110
[4,] 1 8022 1992 0 113
[5,] 1 9110 1963 0 110

问题1:根据ID05的值来给ID04列赋值,只要ID05的值等于190或113就给ID04赋值1,否则赋值为0.
使用下面代码很容易实现:
Dat$ID04 = 0Dat$ID04[which(Dat$ID05 == 190 | Dat$ID05 == 113)] = 1
但问题是:
问题2:根据ID05的值来给ID04列赋值,只要ID05的值等于190就给ID04赋值为ID03/ID02,否则赋值为0.
Dat$ID04[which(Dat$ID05 == 190 | Dat$ID05 == 113)] = Dat$ID03/ID02
此时使用上面语句就有警告,有时无法使用全部操作。

什么原因?如何解决?不使用循环。




二维码

扫码加我 拉你入群

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

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

关键词:Which 不使用 赋值 矢量化运算

回帖推荐

yywan0913 发表于2楼  查看完整内容

沙发
yywan0913 在职认证  发表于 2016-2-23 08:43:25
  1. w=which(Dat$ID05==190|Dat$ID05==113)
  2. Dat$ID04[w]=Dat$ID03[w]/Dat$ID02[w]
  3. 或者
  4. Dat$ID04 = ifelse(Dat$ID05==190|Dat$ID05==113,Dat$ID03/Dat$ID02,Dat$ID04)
复制代码

藤椅
562557411 发表于 2016-2-23 09:59:11
dat$ID04<-ifelse(dat$ID05==190|dat$ID05==113,1,0),返回值可以换成公式或者条件,你可以试试

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 03:14