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/cn.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灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP