作者clansoda (小笨)
看板R_Language
标题[问题] 创造dummy variable
时间Mon Dec 26 15:57:04 2016
各位好 单一变数创造dummy variable网路已经有很多答案了
我现在遇到的是要比对多个变数来创造dummy variable
假设我的data长下面这样
rowname a b c
1 2 5 NA
2 1 NA NA
3 1 2 3
4 3 NA NA
5 2 4 NA
6 1 4 5
希望能得到
is.1 is.2 is.3 is.4 is.5
1
FALSE TRUE FALSE FALSE FALSE
2
TRUE FALSE FALSE FALSE FALSE
3
TRUE TRUE TRUE FALSE FALSE
4
FALSE TRUE FALSE TRUE FALSE
5
FALSE TRUE FALSE TRUE FALSE
6 TRUE FALSE FALSE TRUE TRUE
6
这个例子是个简单化的范本
一个row有可能分属好几个category 以第一个row举例
他就属於第二类跟第五类 第二个row则只属於第一类
我现在的写法是
for (i in 1 : 5) {
dat[, paste0("is.category", "i") := .SD[, 2 : 4] %in% "i" %>% any,
by = 1 : nrow(dat)]
}
目前我只会这样写 但是这个方法超慢 以我50万个rows为例就要跑20分钟
我相信有更好的写法 只是我不知道如何写 因此想请教各位
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.175.237.42
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1482739029.A.247.html
1F:→ celestialgod: 看不懂,期望得到什麽结果.... 12/26 18:49
※ 编辑: clansoda (36.238.38.77), 12/26/2016 19:32:59
2F:→ clansoda: 已经加上想要的结果了 12/26 19:33
3F:→ andrew43: 预期结果第一个row写错了? 12/26 22:04
4F:→ clansoda: 第一个是rowname 所以应该没有错 12/27 15:16