Re: [問題] 判斷資料值後做資料整理

作者: celestialgod (天)   2016-09-21 12:37:20
※ 引述《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))
作者: a78998042a (Benjimine)   2016-09-22 02:02:00
這個會把新手嚇死吧w
作者: cywhale (cywhale)   2016-09-22 12:58:00
現在教別人R都在想要用以前dataframe那一套還是直接新的
作者: andrew43 (討厭有好心推文後刪文者)   2016-09-23 04:58:00
我支持有能力者往新開發的function選擇。以效率、易讀性和降低錯誤的方向來看,都很值得學習。

Links booklink

Contact Us: admin [ a t ] ucptt.com