[問題] 有關於資料整理(向右對齊)

看板R_Language作者 (flying)時間9年前 (2015/07/12 23:34), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串1/4 (看更多)
[軟體熟悉度]: 使用者(已經有用R 做過不少作品) [問題敘述]: 請簡略描述你所要做的事情,或是這個程式的目的 有一個data.table如以下格式, x b V3 V4 1 1 2 1 1 2 2 3 3 3 4 4 4 5 4 4 5 5 6 5 5 6 1 2 1 1 我想要變成以下格式, x b V3 V4 1 1 2 1 1 2 2 3 3 3 4 4 4 5 4 4 5 5 6 5 5 6 1 2 1 1 目前我可以用一個迴圈把它完成,如以下, 但是我想問有沒有使用data.table語言的方法? 因為實際資料有達到十萬多條row。 len <- ncol(dd) dd <- as.data.frame(dd) for (x in 1:nrow(dd)) { idx <- sum(dd[x,]!="") if(idx != len) { dd[x,((len-idx+1):len)] <- dd[x,1:idx] dd[x,1:(len-idx)] <- "" } } 關於data.table的方式,我有想到一個方法如下, 可是執行一直報錯,所以不知道問題在哪? len=ncol(dd) fun <- function(x) { idx <- len-length(which(x!='')) if (idx !=0) { res <- cbind(array(rep('',idx),c(1,idx)),as.vector(x[which(x!='')])) } else { res <- as.vector(x[which(x!='')]) } res } dd[,names(dd)[1:4]:=apply(.SD, 1, fun)] 先謝謝大家了! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.84.64.149 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1436715260.A.EFF.html

07/13 00:01, , 1F
.SD是每一行,他只能用lapply一次丟一行
07/13 00:01, 1F

07/13 01:22, , 2F
謝謝提示!
07/13 01:22, 2F
文章代碼(AID): #1LeeZyx_ (R_Language)
文章代碼(AID): #1LeeZyx_ (R_Language)