看板 R_Language 關於我們 聯絡資訊
※ 引述《amygm307 (簡單點ˇ)》之銘言: : 判斷B欄值為0的那一列,為整筆資料的第一列 : 變成 : A B : 1 1 0 : 2 1 5 : 3 3 na : 因為我每筆資料B為0的位置都不一樣 : 目前想到的作法是用if去判斷df$B==0時回傳該值為第幾列 : 然後再刪掉前面資料df[-i,] : 但是我不知道"回傳第幾列"應該怎麼寫 : 拜託各位大大幫幫小妹ˊˋ : 一直找不到有用的解法 1. library(data.table) dt <- data.table(A = c(1,1,1,1,1,3), B = c(3,1,2,0,5,NA)) dt[ , rn := .I][rn >= which(B == 0)] 2. library(dplyr) df <- data.frame(A = c(1,1,1,1,1,3), B = c(3,1,2,0,5,NA)) df %>>% mutate(rn = 1:nrow(.)) %>>% filter(rn >= which(B == 0)) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.233.137.225 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1474432642.A.0F7.html
a78998042a: 這個會把新手嚇死吧w 09/22 02:02
有能力就早點掌握好的工具,不用在那浪費時間用那些沒效率的函數 而且大多數新手應該都只是處理表格式資料 類似SQL語法的dplyr很適合直接學習 而data.table會稍難,這個套件新手要摸熟才會需要花不少時間 ※ 編輯: celestialgod (36.233.137.225), 09/22/2016 02:44:15
cywhale: 現在教別人R都在想要用以前dataframe那一套還是直接新的 09/22 12:58
andrew43: 我支持有能力者往新開發的function選擇。 09/23 04:58
andrew43: 以效率、易讀性和降低錯誤的方向來看,都很值得學習。 09/23 04:59