Re: [問題] 符合條件就跑出colunm names

看板R_Language作者 (天)時間10年前 (2015/09/21 13:45), 10年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《gbd37 (有夠瞎)》之銘言: : [問題類型]: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : [軟體熟悉度]: : 入門(寫過其他程式,只是對語法不熟悉) : [問題敘述]: : 有個data.frame,我想找出data中有沒有1過多或是0過多的情況發生, : 目前CODE範例是取0.7百分位數&FREQ>5當門檻 : 我想OUTPUT出column names與範例程式碼output的結果 : 且沒有符合的條件不print出<0 rows> (or 0-length row.names) : 期望OUTPUT出 : : Var1 Freq column column.name : 1 0 7 1 A : Var1 Freq column column.name : 2 1 7 3 C : Var1 Freq column column.name : 2 1 6 4 D : Var1 Freq column column.name : 2 1 6 5 E : 的結果,儲存一個新的data.frame 我把重點用紅色圈起來了 主要就是在裡面做一個邏輯值的判斷就可以解決這個問題 library(data.table) library(plyr) library(dplyr) library(magrittr) set.seed(100) dat = data_frame(A=sample(c(0,1), 10, replace = TRUE), B=sample(c(0,1), 10, replace = TRUE), C=sample(c(0,1), 10, replace = TRUE), D=sample(c(0,1), 10, replace = TRUE), E=sample(c(0,1), 10, replace = TRUE)) dat %>% llply(function(x){ tmp = table(x) %>% {.[-which(. <= quantile(., 0.7))]} if (is.null(tmp) || length(tmp) == 0) tmp = rep(NA, 2) else tmp %<>% c(as.numeric(names(.)), .) tmp }) %>% do.call(rbind,.) %>% data.table(keep.rownames=TRUE) %>% setnames(c("columnName", "Var", "Freq")) %>% na.omit %>% mutate(column = match(columnName, names(dat))) # columnName Var Freq column # 1: A 0 7 1 # 2: C 1 7 3 # 3: D 1 6 4 # 4: E 1 6 5 llply改成laply就沒有column name一併output 只能自己在手動加上去 所以我才沒用laply 不然這個用laply直接出來就是matrix了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.73.159 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1442814301.A.861.html ※ 編輯: celestialgod (140.109.73.159), 09/21/2015 13:51:21

09/22 11:04, , 1F
我跪 謝
09/22 11:04, 1F
文章代碼(AID): #1L_vbTXX (R_Language)
文章代碼(AID): #1L_vbTXX (R_Language)