楼主: Yanni1990
15537 7

[问答] 新手求教 大量判断条件的判断语句 [推广有奖]

  • 1关注
  • 0粉丝

本科生

81%

还不是VIP/贵宾

-

威望
0
论坛币
398 个
通用积分
1.1684
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20259 点
帖子
54
精华
0
在线时间
182 小时
注册时间
2012-6-12
最后登录
2018-10-30

楼主
Yanni1990 发表于 2015-9-4 13:23:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
简单地说 有一个表 类似

IDABC
1xxyyZZ
2XXyyzz
3XxYyZz
4xxyYZz

其中A列值是有200+水平的factor

如果我想根据A列值给每个记录加标签,例如

for (i in 1:length(A)) {if Ai==xx, Di=3, else if Ai==Xx|Ai==xX, Di=2, else Di=1}(当然D是定义好的空向量啦)

现在问题是A列水平有200+ 每个水平都要放在判断语句里的话会非常臃肿 不知道大家有没有什么好的解决方法?


另 整个表有大约80w条记录 所以200+的水平很正常 也请大家稍微考虑一下内存资源使用情况等等。。。

新手初来乍到 非常感谢!


PS
[最下面那个图不知道怎么删除 不过和本问题没什么关系 大家忽略之~


二维码

扫码加我 拉你入群

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

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

关键词:新手求教 factor length Facto else 判断 多条件

1.png (15.56 KB)

1.png

沙发
万人往LVR 在职认证  发表于 2015-9-4 16:20:40
  1. ##输入一一对应的200+长度的Avalue与Dvalue
  2. Avalue <- c(...)
  3. Dvalue <- c(...)
  4. ##找A对应的D的函数
  5. mapD <- function(x){return(Dvalue[which(Avalue==x)])}
  6. A <- ... ##输入A
  7. D <- sapply(A,mapD)
复制代码
已有 1 人评分热心指数 收起 理由
求证1加1 + 1 热心帮助其他会员

总评分: 热心指数 + 1   查看全部评分

藤椅
Yanni1990 发表于 2015-9-4 16:37:35
万人往LVR 发表于 2015-9-4 16:20
哇哦 非常感谢!!{:3_59:}

还有个新想法 如果新的记录进来以后 A列是新的值 即没有在Avalue中定义过 那是不是就要报错了。。?
除了在执行sapply之前检查新的值是否在已经定义的Avalue向量中 还有别的方法吗?

多谢前辈!

板凳
Yanni1990 发表于 2015-9-4 16:37:44
万人往LVR 发表于 2015-9-4 16:20
哇哦 非常感谢!!{:3_59:}

还有个新想法 如果新的记录进来以后 A列是新的值 即没有在Avalue中定义过 那是不是就要报错了。。?
除了在执行sapply之前检查新的值是否在已经定义的Avalue向量中 还有别的方法吗?

多谢前辈!

报纸
Yanni1990 发表于 2015-9-4 16:49:46
万人往LVR 发表于 2015-9-4 16:20
试验了一次以后就知道了我回复里的问题的答案了~

谢谢前辈

地板
ntsean 发表于 2015-9-4 18:12:57
如果很多,那么一个个判断是很浪费效率的,最快最简单是用dictionary
dic <- c("xx" = 1,
             "xX" = 2,
             "Xx" = 2)
也就是把每个level map成一个新的值
然后 D = dic[A]如果A是factor那么 D = dic[as.character(A)]

就可以了

7
Yanni1990 发表于 2015-9-5 09:41:22
ntsean 发表于 2015-9-4 18:12
如果很多,那么一个个判断是很浪费效率的,最快最简单是用dictionary
dic
嗷~那我都试试看看具体情况下哪种好用~

非常感谢{:2_31:}

8
ryoeng 在职认证  发表于 2015-9-5 20:04:05
提示: 作者被禁止或删除 内容自动屏蔽

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

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