Re: [問題] 兩個變項合併為一
※ 引述《zxas10143 (~無言以對~)》之銘言:
: [軟體熟悉度]:
: 入門(寫過其他程式,只是對語法不熟悉
: 各位高手好
: 小的想請教前輩們如何將變項X與變項Y合併為變項Z
: 如下:
: x y z(合併後)
: 1 NA 1
: 2 NA 2
: NA 5 5
: 3 NA 3
: NA 8 8
: 用STATA的語言就是 egen z=rowfirst( x y )
: 不知道R是怎麼做的呢?
: 還煩請前輩們解惑
五種方法任君挑選^^"
## naive method
dat = data.frame(x = c(1,2,NA,3,NA), y = c(NA,NA,5,NA,8))
dat$z = dat$x
dat$z[is.na(dat$x)] = dat$y[is.na(dat$x)]
## cool method
dat = data.frame(x = c(1,2,NA,3,NA), y = c(NA,NA,5,NA,8))
dat$z = ifelse(is.na(dat$x), dat$y, dat$x)
## more elegant
dat = data.frame(x = c(1,2,NA,3,NA), y = c(NA,NA,5,NA,8))
dat$z = with(dat, ifelse(is.na(x), y, x))
## tricky but helpful for three or more columns
dat = data.frame(x = c(1,2,NA,3,NA), y = c(NA,NA,5,NA,8))
dat$z = na.omit(c(unlist(t(dat))))
## only available for numeric columns
dat = data.frame(x = c(1,2,NA,3,NA), y = c(NA,NA,5,NA,8))
dat$z = rowSums(dat, TRUE)
benchmark: http://pastebin.com/z03vffti
我一般都用2或3... 雖然看起來benchmark是比較沒效率XDDDD (但是都很快就是)
但是在dplyr中使用的話,比較方便
搭配data.table也比較不會有複製資料的問題
4跟5是我google到的方法,歡迎參考看看。
reference: http://tinyurl.com/nzjtxea
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.27.107
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1439191952.A.CF9.html
推
08/10 15:50, , 1F
08/10 15:50, 1F
囧,拜託別這樣... 我只是喜歡google跟解決問題而已XD
※ 編輯: celestialgod (123.205.27.107), 08/10/2015 16:12:22
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章