R_Language 板


LINE

※ 引述《paganina (可以慢慢講嗎)》之銘言: : [問題類型]:程式諮詢 : 用R做樞紐分析的表格 : [熟悉程度] : 入門(寫過一點點程式,對語法不熟悉) 數字計算覺得哪裏怪怪的 group A(B)的三個年紀比例加起來是1 又說那個是性別比例... 覺得很怪... 我先當作你要算男性在group A(B)中,各年紀的分布.... ---- 好久沒寫R... 給你三種解法,base R再多個欄位就沒辦法了,建議跳過 dplyr的解法不太直覺,自行斟酌 我喜歡的還是data.table的解法乾淨俐落XD # base R解法 set.seed(100) DF <- data.frame( group = rep(c("A", "B"), 15), sex = sample(c("M", "F"), size = 30, replace = TRUE), age = rep(c("0-20", "21-60", "61-100"), 10), stringsAsFactors = FALSE ) out_DF <- as.data.frame(tapply(DF$sex, list(DF$age, DF$group), function(x) sum(x == "M"))) out_DF$age <- rownames(out_DF) rownames(out_DF) <- NULL transform(out_DF, A = A / sum(A), B = B / sum(B)) # A B age # 1 0.6666667 0.2222222 0-20 # 2 0.3333333 0.4444444 21-60 # 3 0.0000000 0.3333333 61-100 # dplyr library(dplyr) library(tidyr) set.seed(100) DF <- data_frame( group = rep(c("A", "B"), 15), sex = sample(c("M", "F"), size = 30, replace = TRUE), age = rep(c("0-20", "21-60", "61-100"), 10) ) DF %>% group_by(group, age) %>% # get count of male by group and age summarise(proportion_male = sum(sex == "M")) %>% group_by(group) %>% # get proportion of male mutate(proportion_male = proportion_male / sum(proportion_male)) %>% # get pivot table spread(group, proportion_male) # # A tibble: 3 x 3 # age A B # <chr> <dbl> <dbl> # 1 0-20 0.667 0.222 # 2 21-60 0.333 0.444 # 3 61-100 0. 0.333 # data.table library(data.table) set.seed(100) DT <- data.table( group = rep(c("A", "B"), 15), sex = sample(c("M", "F"), size = 30, replace = TRUE), age = rep(c("0-20", "21-60", "61-100"), 10) ) # get pivot table with male counts in cell DT2 <- dcast(DT, age ~ group, function(x) sum(x == "M"), value.var = "sex") # calculate proportion of male DT2[ , c("A", "B") := lapply(.SD, function(x) x / sum(x)), .SDcols = c("A", "B")] DT2 # age A B # 1: 0-20 0.6666667 0.2222222 # 2: 21-60 0.3333333 0.4444444 # 3: 61-100 0.0000000 0.3333333 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.14.59.166
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1553361454.A.F36.html ※ 編輯: celestialgod (119.14.59.166), 03/24/2019 01:54:29 ※ 編輯: celestialgod (119.14.59.166), 03/24/2019 01:55:57
1F:推 frojet: 看各位大大的程式碼,真是叫我學會很多技巧 03/24 06:35
2F:推 cywhale: data.table []裡面可以寫lapply真的很方便~~ 03/24 08:29
3F:→ paganina: 感謝cel大大,大方解惑,有解決問題了,感謝 03/24 15:52







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP