R_Language 板


LINE

[问题类型]: 程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来) [软体熟悉度]: 入门(写过其他程式,只是对语法不熟悉) [问题叙述]: 我有一个data frame,想要做成类似这样的表格 http://ppt.cc/nJZr 图一 而data frame如图中的右半边 http://ppt.cc/wauk 问题1. 如何为这样的表格建立dara frame? 原本想用by或是apply之类搭配自己写函数,用函数判断,什麽型态的栏位要做什麽统计 但是by丢进函数的lists好像还是要用for loop处理。 这样好像乾脆直接写loop 一个个column去统计就好了。(by还是有分组的功能就是了) 还是R中有比较好的方法可以写? 问题2. data中的那些值为1/0的栏位,其实是代表boolean的T/F,在R中好像不能混用? 因为这个data之後会丢去做glm。 请问我该怎麽转换型态? 或者,在写CSV档时怎麽表示boolean值给R来读? 抱歉这次的问题有点乱,想不到怎麽问比较有条理。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.137.56
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1422812638.A.334.html ※ 编辑: EricTao (140.112.137.56), 02/02/2015 01:45:22
1F:→ andrew43: 在R中0/1和F/T是通用的。像是做逻辑式回归,0/1即可。 02/02 01:53
2F:→ andrew43: 我认为你原本的资料是洽当的。要再做各别的描述只要 02/02 01:54
3F:→ andrew43: 按二个组切开分别分析就可以了。 02/02 01:55
4F:→ andrew43: 但如果要一键完成,大概还是要自己写。 02/02 01:56
5F:→ andrew43: 我想到的也是用for loop走每一栏,然後用tapply进行。 02/02 02:06
感谢,请问可以直接写函式来loop,而不用tapply吗? 还是这样比较好写? ※ 编辑: EricTao (140.112.137.56), 02/02/2015 14:12:26 看来 by是传入一个个list而非list(list()),所以只有单层回圈 回传值也是一样,非单一个资料结构? 用rbind串成frame初步完成,只是as.integer还是会显示浮点数@@" df[names(x[i])]<-as.integer(sum(x[i]==1)) ※ 编辑: EricTao (140.112.137.56), 02/02/2015 17:02:35
6F:→ andrew43: 是否请你写出一个雏形,看看你卡在哪里,再来一起解? 02/03 00:16
7F:→ celestialgod: 给partital data 给你写的程式码 再来讨论比较好 02/03 13:14
8F:→ celestialgod: 资料不同 怎样整理比较快也不同 02/03 13:15
抱歉最近在看别的部分,上一次编辑其实是想表达初步解决了的意思。 承蒙如此热情,就再麻烦大大们,看能不能改进了 资料长这样 http://ppt.cc/i77w 目前table长这样 http://ppt.cc/qonZ 有点丑XD 有空再看怎麽调校外观.. -- output$DFcc<-renderTable({ if(length(input$y)<1)return() d<-by(cova,eval(parse(text=paste("cova$",input$y,sep=""))),mtab) #把input$y的值串在cova$上,例如cova$HTN,作为BY的分组栏位。 #用 d<-by(cova,cova[[input$y]],mtab) 好像就可以了? f<-t(do.call(rbind,d)) #把BY的回传值rbind再转秩成我要的table }) mtab<-function (x){ df<-list() df["n"]<-nrow(x) for(i in 1:length(x)) { if(names(x[i])=="ID") {}#noop #这边想要判断栏的变数型态不过还不知道怎麽写好 #字串就跳过但是M/F要处理,不知道能不能用boolean? #数字如果是1/0视为boolean,但年龄应该要show平均值&range else if(names(x[i])=="GENDER") { df["Male"]<-as.character(sum(x[i]=="M")) df["Female"]<-as.character(sum(x[i]=="F")) } ...... else { df[names(x[i])]<-as.character(sum(x[i]==1)) } } return(df) } ※ 编辑: EricTao (140.112.137.56), 02/06/2015 19:06:10
9F:→ andrew43: 用栏名(即变数名)来判断会不会方便一些? 02/07 17:06
10F:→ andrew43: 如果纯靠资料内容来判断,似乎比较困难。 02/07 17:07
11F:→ andrew43: 不过这都视你未来会丢进什麽资料而定。 02/07 17:08
12F:→ EricTao: 对阿 目前是靠栏位名判断 想顺便练习看看就是XD 02/07 22:22
13F:→ andrew43: length(table(x)) 如果等於 2 可以猜测为binary。 02/07 23:14
如果能判断此栏的数值range,对了,像图一中age的range应该用什麽方法来算呢? 同样的方法能判断1/0的特徵吧? 用max/min好像可以耶? 之前一直脑筋转不过来 ※ 编辑: EricTao (140.112.137.56), 02/09/2015 15:56:16







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