作者puppy77 ( )
看板R_Language
标题[问题] 资料分类
时间Sun Feb 9 20:16:52 2014
[问题类型]:
程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
[软体熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
我有n笔资料,每笔资料都有m个变数,存在data.frame里面(维度n*m)
需要依照m个变数的值去做分类,譬如当一笔资料
V1<0 and V2>V3 and V4 %in% c("W","Z")
就会分类为第1类
类别有很多,大约30类左右
希望最後得到一个长度n的向量,向量里面的数字就是分类的编号
原本是想用if else if去做,但似乎不能用在向量上
只会对第一笔资料做判断(这部分我不是非常确定,还请大家纠正)
所以外面需要套上for回圈去一笔一笔判断
但因为资料非常多,还是希望能够以向量的方式下去做
我目前的做法是
result = rep(0,n) #记录最後分类结果的向量
fg = rep(T,n) #记录每一笔资料是否被分类过(已分类F,未分类T)
r1 = 是否符合第1类条件的向量(长度n,内容全是T or F)
result[r1 & fg] = 1
fg[r1 & fg] = F
r2 = 是否符合第2类条件的向量
result[r2 & fg] = 2
fg[r2 & fg] = F
依此类推到最後
虽然这个已达到我的要求,不过还是稍嫌麻烦,不知道有无更俐落的写法?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.162.74.61
1F:→ Wush978:我觉得`cut`应该可以达到你要的功能 02/09 21:17
2F:→ Wush978:细节使用你要自己去读?cut了 02/09 21:17
※ 编辑: puppy77 来自: 1.162.74.61 (02/09 22:05)
3F:→ puppy77:我会研究看看,谢谢!! 02/09 22:06
4F:→ puppy77:cut是否只能用在一个变数的情况?? 02/10 22:16