全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3345 22
2016-11-17
r中如何让某一列根据不能值变成多列且其他值不变,新生成的多列值用1和0表示(其实是用来做随机森林的)

举例:
x<- data.frame(type=c("a","a","b","b"),value_1=c(1,2,3,4),value_2=c(4,3,2,1))
x
  type value_1 value_2
1    a       1       4
2    a       2       3
3    b       3       2
4    b       4       1

变形后成为
y<-data.frame(a=c(1,1,0,0),b=c(0,0,1,1),value_1=c(1,2,3,4),value_2=c(4,3,2,1))
y
  a b value_1 value_2
1 1 0       1       4
2 1 0       2       3
3 0 1       3       2
4 0 1       4       1

有没有现成的函数或者包呢

二维码

扫码加我 拉你入群

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

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

全部回复
2016-11-17 22:13:02
复制代码
二维码

扫码加我 拉你入群

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

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

2016-11-18 10:09:40
x$a[x$type == "a"]<- "1"
x$a[x$type == "b"]<- "0"
x$b[x$type == "b"]<- "1"
x$b[x$type == "a"]<- "0"
是不是你要的结果?
楼主的type是不是相应变量? 随机森林可以直接用a,b这类的分类变量的
二维码

扫码加我 拉你入群

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

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

2016-11-21 11:06:10
ntsean 发表于 2016-11-17 22:13
这个为啥我看帮助里的model.matrix(~ a + b, dd) 一直b1都是不显示的呢?难道只能显示跟a列数相同的b列?能否给解释一下。
二维码

扫码加我 拉你入群

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

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

2016-11-21 11:10:16
qiu435 发表于 2016-11-18 10:09
x$a[x$type == "a"]
type是特征值,不是分类变量。我现在某个特征值可能有上千种分类,那就要改为上千列,你这种要写循环。我是指觉得R应该直接有清洗这类特征值的函数吧。
二维码

扫码加我 拉你入群

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

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

2016-11-21 12:46:59
zl66983279 发表于 2016-11-21 11:10
type是特征值,不是分类变量。我现在某个特征值可能有上千种分类,那就要改为上千列,你这种要写循环。我 ...
好像没有,写过循环也很方便的吧,。。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群