看板 R_Language 關於我們 聯絡資訊
※ 引述《tony1331 (BLUE)》之銘言: : [問題類型]: : 我想用R 做某件事情,但是我不知道要怎麼用R 寫出來 : [軟體熟悉度]: : S寫過程式,R 是我的第一次 : [問題敘述]: : 01:00 a s j e j e l d k : 02:00 d w e w g w : 03:00 l e f w e g : 04:00 e r s : .. : .. : .. : 一個data.frame 時間後面號碼,每列不一 : 有重複 : (1) 請問大家要怎麼讓每列的號碼沒有重附,用unique好像不行 不知道你怎麼存那些character,先假設你用字串把它們combine再一起 DF <- data.frame(time = c("01:00", "02:00", "03:00", "04:00", "05:00"), characters = c("asjejeldk", "dwewgw", "lefweg", "ers", "qaqasdfd"), stringsAsFactors = FALSE) transform(DF, characters = lapply(strsplit(characters, ""), unique)) # time characters # 1 01:00 a, s, j, e, l, d, k # 2 02:00 d, w, e, g # 3 03:00 l, e, f, w, g # 4 04:00 e, r, s # 5 05:00 q, a, s, d, f : (2) 有什麼方法讓a b c ...這些號碼可以整理成在哪個時間出現幾次 是unique後取? 這樣就是每個都一次阿,下面用沒unique方式做: DF3 <- transform(DF, characters = strsplit(characters, "")) DF4 <- data.frame(time = unlist(mapply(function(x, y) rep(x, length(y)), DF3$time, DF3$characters)), character = unlist(DF3$characters), stringsAsFactors = FALSE) aggregate(rep(1, nrow(DF4))~ character + time, DF4, length) # 前五筆 # character time rep(1, nrow(DF4)) # 1 a 01:00 1 # 2 d 01:00 1 # 3 e 01:00 2 # 4 j 01:00 2 # 5 k 01:00 1 : 懇請教導,感謝~ : ----- : Sent from JPTT on my Asus ASUS_Z012DA. 套件做法: library(data.table) library(pipeR) DT <- data.table(time = c("01:00", "02:00", "03:00", "04:00", "05:00"), characters = c("asjejeldk", "dwewgw", "lefweg", "ers", "qaqasdfd")) # 1. DT[ , .(character = unlist(tstrsplit(characters, ""))), by = .(time)][ , .(characters = paste(unique(character), collapse = "")), by = .(time)] # time characters # 1: 01:00 asjeldk # 2: 02:00 dweg # 3: 03:00 lefwg # 4: 04:00 ers # 5: 05:00 qasdf # 2. DT[ , .(character = unlist(tstrsplit(characters, ""))), by = .(time)][ , .(cnt = .N), by = .(time, character)] # time character cnt # 1: 01:00 a 1 # 2: 01:00 s 1 # 3: 01:00 j 2 # 4: 01:00 e 2 # 5: 01:00 l 1 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.170.62.243 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1505306585.A.FCC.html ※ 編輯: celestialgod (118.170.62.243), 09/13/2017 20:43:36
tony1331: 不好意思 我表達有問題 讓您誤會了 我改一下~ 09/13 20:54
tony1331: c大 我改了 麻煩在給與教導,謝謝 09/13 21:03