Re: [問題] 符合條件就跑出colunm names
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章