看板 R_Language 關於我們 聯絡資訊
這是讓新手方便的教學文 # 讀資料 dat <- read.csv(textConnection("DATE,NAME,VALUE 2015/11/12 8:01,tony,32 2015/11/12 9:02,tony,34 2015/11/12 8:03,sam,32 2015/11/12 9:04,sam,34"), colClasses=c("character","character","numeric")) # 把 DATE 轉成 POSIXlt 時間日期物件,之後才能對它排序比大小 dat$DATETIME <- strptime(dat$DATE, format = "%Y/%m/%d %H:%M") # 求以 DATETIME 做遞減排序的順序 reorder <- order(dat$DATETIME, decreasing=T) # 排序後的 dat dat[reorder, ] # 所有資料最新的那一列 dat[reorder[1], ] # 知道上面的道理後,對 dat 按 NAME 進行處理 dat1 <- by( dat, dat$NAME, # 按 dat$NAME 分組處理 function(x){ # 取出各組內按 DATETIME 遞減排序後的第一名那列 x[order(x$DATETIME, decreasing=T)[1], ] } ) # dat1 是個 list,可以看看 dat1[[1]] 和 dat1$sam 和 dat1$tony 是什麼 # 最後 rbind 拚起來 do.call("rbind", dat1) ※ 引述《tony255034 (5245566)》之銘言: : 文章分類提示: : - 問題: 當你想要問問題時,請使用這個類別 : [問題類型]: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : [軟體熟悉度]: : 新手(沒寫過程式,R 是我的第一次) : [問題敘述]: : 想請問要如何將除了時間最新的資料留下來呢? : 原始資料 : DATE NAME VALUE : 2015/11/12 8:00 tony 32 : 2015/11/12 9:00 tony 34 : 2015/11/12 8:00 sam 32 : 2015/11/12 9:00 sam 34 : 過濾後資料 : DATE NAME VALUE : 2015/11/12 9:00 tony 34 : 2015/11/12 9:00 sam 34 : [程式範例]: : 尚無,不知如何處理這種資料 : [環境敘述]: : R3.2.2 Win7 32bit : [關鍵字]: -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.117.37.172 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1447367943.A.CF4.html
spiderway: 感謝~~~~ 11/13 22:59
po5113: 感謝!! 11/13 23:14
tony255034: 感謝~~~ ORZ 11/16 22:43