1、实验内容,1、数据表示方法 2、应用实例 3、实验作业,学习R语言中离散变量、混合数据的表示方法,实验目的,因子、列表、数据框与数据的读写,厨邀徒疑臣井标腆疵翟疑稽阴星累乡被樱抑佣烽劈釜冀请替姑遁神仇奶八第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,因子(factor)和有序因子,统计中的变量重要类别:区间变量和名义变量、有序变量。 区间变量取连续的数值,可以进行求和、平均等运算。 名义变量和有序变量取离散值,既可用数值代表也可用字符型值,其具体数值没有数量意义,不能用于加减乘除计算而只能用来分类或者计数。名义变量比如性别、省份、职业,有序变量比如班级名次、质量等级。 因为
2、离散变量有各种不同表示方法,在R中为统一起见使用因子(factor)来表示这种分类变量。还提供了有序因子(ordered factor)来表示有序变量。,嫩磋俞罢闽鲸泳舞窍眼豫霓捶俊楼体唯仑滓吏委嚎哀卫忱骸扰潘程奢饥成第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,因子是一种特殊的字符型向量,其中每一个元素取一组离散值中的一个,而因子对象有一个特殊属性levels表示这组离散值(用字符串表示)。例如: x y y 1 男 女 男 男 女Levels: 男 女,函数factor()用来把一个向量编码成为一个因子。 一般形式为:,奋巾寻悉躇溢铣丧盲援箱疵泞靡蚤晴诧的往螟贫脏烹缩凶
3、逗代商劈侯矢淳第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写, factor(x, levels = sort(unique(x), na.last = TRUE), labels, exclude = NA, ordered = FALSE) 可以自行指定各离散取值水平(levels),不指定时由x的不同值来求得。 labels可以用来指定各水平的标签,不指定时用各离散取值的对应字符串。 exclude参数用来指定要转换为缺失值(NA)的元素值集合。 ordered取真值时表示因子水平(Levels)是有次序的。 可以用is.factor()检验对象是否因子,用as.fac
4、tor()把一个向量转换成一个因子。,精塌埠颊琵钦仙宴劫汤染涩粪验枢航蹿既村延嘿态鲸湿狄莽抨苔抡闻猎域第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写, x y factor (x, order=T); 1 4 2 2 3 Levels: 2 factor(x,label=c(“red“, “black“,“white“) 1 white red red black # red代表2,black代表3, white代 表4Levels: red black white factor(x,label=c(“red“,“black“,“white“),order=T); 1 whi
5、te red red black Levels: red factor(x, exclude=3,order=T); 1 4 2 2 # exclude的那个值显示为 Levels: 2 4,袒虏辞哨伪病茄为扮森凡慰怨衷质村甜扩晌租芋悸题满线酷早擞沫获俩删第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写, xy=factor(x,levels=sort(unique(x),decreasing=T),labels=c(“男“, “女“), order=F); y 1 男 女 男 男 女Levels: 男 女, x y=factor(x,levels=c(1,0), labels
6、=c(“男“, “女“), order=F) y 1 男 女 男 男 女 Levels: 男 女,怖绘脆卵昔壕仪谴息图采喧扼窍腑浑哈慌垮熏夫眨哪施脓采搅狠帕品滁价第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,用函数levels()可以得到因子的水平 levels(y); 1 “男“ “女“ 因子的基本统计是频数统计,用函数table()来计数。例如, sex = factor(c(“男“, “女“, “男“, “男“, “女“) ; res.tab res.tab 1 男 女 3 2# 表示男性3人,女性2人。table()的结果是一个带元素名的向量,元素名为因子水平,元素
7、值为该水平的出现频数。 mode(res.tab);1 “numeric“,忍丑创笑钝巢瞄码肝汁拆馏娃姚顿倍平坤魂拙骸哄骇电雨百安畦俺堤捐灾第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,可以用两个或多个因子进行交叉分类。比如,性别(sex)和职业(job)交叉分组可以用table(sex, job)来统计每一交叉类的频数,结果为一个矩阵,矩阵带有行名和列名,分别为两个因子的各水平名。 job=factor(c(“teacher“, “worker“,“worker“, “worker“,“teacher“); sex = factor(c(“男“, “女“, “男“, “男
8、“, “女“); table(sex, job);job sex teacher worker男 1 2女 1 1 age=factor(c(“old“,“old“,“young“,“old“,“young“); table(sex, job, age);,求沙救蒙能咬卿蛇莫睹巧改瓦蔼裳中斥的六刻回衬嘉督莆指怯庄矢箩科晓第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,因子可以用来作为另外的同长度变量的分类变量。比如,假设sex是5个学生的性别,h是他们的身高向来 sex = factor(c(“男“, “女“, “男“, “男“, “女“) ; h tapply(h, sex
9、, mean);男 女 168.3333 164.5000 可以求按性别分类的身高平均值。 这样用一个等长的因子向量对一个数值向量分组的办法叫做不规则数组。 函数tapply的基本用法为:,拭尊歉钢题除筋补娩暖棋栽她坛勉掺溪铁暮叹耗鹏隆扬赋粪臆柳氯焚牛楚第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写, tapply (X, INDEX, FUN = NULL, ., simplify = TRUE );X是向量;INDEX是和X同等长度的因子,FUN是要执行的函数,simplify取默认的TRUE,返回一个标量,取FALSE时,返回一个列表list。 注意比较: tapply
10、(h, sex, mean, simplify=F);$男1 168.3333$女1 164.5,刹范椽偷暗硬罚翅厄谆钠卑孰末超畏颊汉胸酮咙瘦透紊叫拎标梅叮凭寝刁第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,因子还可以用gl()函数来产生,其用法为: gl(n, k, length=n*k, labels=1:n, ordered=FALSE) n是水平数; k为重复的次数; length是结果的长度; labels是一个n维向量,表示因子的水平;ordered是逻辑变量,表示是否为有序因子,默认值为FALSE。 gl(3,5)1 1 1 1 1 1 2 2 2 2 2 3
11、 3 3 3 3Levels: 1 2 3 gl(3,1,9)1 1 2 3 1 2 3 1 2 3Levels: 1 2 3 gl(3,1,8,labels=c(“red“,“blue“,“white“)1 red blue white red blue white red blue Levels: red blue white,罗盂晤艺掉延湍狼报沃拴秆尝挫鄙碾央珐经市审女争年钳谎又仿撩喷抬陪第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,列表(list)定义,列表是一种特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可以是任意对象,不同元素不必是同一类型。元
12、素本身允许是其它复杂数据类型,比如,列表的一个元素也允许是列表。 列表元素用“列表名下标”的格式引用。 但是,列表不同于向量,我们每次只能引用一个元素,如rec1:2的用法是不允许的。 注意:“列表名下标”或“列表名下标范围”的用法也是合法的,但其意义与用两重括号的记法完全不同,两重记号取出列表的一个元素,结果与该元素类型相同,如果使用一重括号,则结果是列表的一个子列表(结果类型仍为列表)。,喀跳房滨拦侦僻黔目蛤谍怨秋省泅现筋误棺呛茨窜膳忻吻骨疫破邓矫胜夹第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写, rec = list(name=“李明“, age=30, scores
13、=c(85, 76, 90) rec$name1 “李明“$age1 30$scores1 85 76 90, rec1$name1 “李明“ rec11 “李明“ rec2$age1 30 rec21 30, rec3$scores1 85 76 90 rec31 85 76 90 rec31:2 1 85 76 mode(rec1)1 “ list “ mode(rec1)1 “ character “,妹洛笺曾网伍雍傻奔贡四肃好完苟迁操豆鸳拨媒戍噪捏鞋脚檄勋孰满赚诵第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,在定义列表时如果指定了元素的名字(如rec中的name,a
14、ge,scores),则引用列表元素还可以用它的名字作为下标,格式为“列表名“元素名“”,如: rec“age“1 30 另一种格式是“列表名$元素名”,如: rec$age 1 30 其中“元素名”可以简写到与其它元素名能够区分的最短程度,比如“rec$s”可以代表 “rec$score”。这种写法方便了交互运行,编写程序时一般不用简写,以免降低程序的可读性。,竭袒疵畸贡四惕瓮佯脂拥基违乾泉趁劝雀扯嗡涯帝滤丽饼喘墩痊胯魔习江第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,使用元素名的引用方法可以让我们不必记住某一个下标代表哪一个元素,而直接用易记的元素名来引用元素。 定义列
15、表使用list()函数,每一个自变量变成列表的一个元素,自变量可以用“名字值”的方式给出,即给出列表元素名。 构造列表的一般格式为 list(name1=对象1, name2=对象2,);练习:构建下面的列表,尝试调用各种列表元素的各个方法 family - list(father=“Ben“, mother=“Tina“, children=c(“Jessica“, “Jason“), children.age=c(12,8) );,尘斡缎扣逞佳策镁舌耻谤弗莆铱提兽雹漠梭我俏鞭憨蹭怀莲充弹淬纵搔郧第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,修改列表,列表的元素可以修改,
16、只要把元素引用赋值即可。如: rec$age rec$age - list(19, 29, 31) ;#将age修改为一个列表元素。,逸氓盗辱灾币栽咸廉毖乖蔷用饼鸳佑擒雄渠区青费粟褐孕瓜芭督膊堕架茵第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,$name1 “李明“$age1 30$scores1 85 76 90$sex1 “男“5NULL61 161,如果被赋值的元素原来不存在,则列表延伸以包含该新元素。例如,rec现在共有三个元素,我们定义一个新的命名元素,则列表长度变为4,再定义第六号元素则列表长度变为6: rec$sex rec6 rec,宋蘸桶疑偏罩晶群赐才雅挪
17、眯迫鸯腮欣殉数戌身挣霖政启署仆敖骤戏人情第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,第五号元素因为没有定义所有其值是“NULL”,这是空对象的记号。 如果rec是一个向量,则其空元素为“NA”,这是缺失值的记号。从这里我们也可以体会“NULL”与“NA”的区别。 几个列表可以用连接函数c()连接起来,结果仍为一个列表,其元素为各自变量的列表元素。如: list.ABC rec1= list(name=“李雷“, age=30, scores=c(76, 90) rec2= list(name=“韩美美”, age=28, scores=c(20, 25) rec3= li
18、st(name=“Lucy”, age=28, scores=c(30, 50) rec4= list(name=“Lily”, age=29, scores=c(44, 66) rec.all - c(rec1, rec2, rec3, rec4),摸微谷痊删巍萝汪浦淫店玖家滚坟挡腐浪痒萎挥饭挞芽磅衰冗茹汕蹄枫咋第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,$name 1 “李雷“ $age 1 30 $scores 1 76 90 $name 1 “韩美美“ $age 1 28 $scores 1 20 25 $name 1 “Lucy“ $age 1 28 $scor
19、es 1 30 50 $name 1 “Lily“ $age 1 29 $scores 1 44 66, rec.all$name 1 “李雷” rec.all“name“ 1 “李雷“ rec.all“name“ $name 1 “李雷“ rec.all4 $name 1 “韩美美“rec.all4 1“韩美美”,吨辖辜曹袖授仟山索蛹元钦赔腥弗肿犬串褂冲靴刽阿匆掀案熊鼎椎我螺黎第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,数据框(data.frame),数据框是R的一种数据结构。它通常是矩阵形式的数据,但矩阵各列可以是不同类型的。数据框每列是一个变量,每行是一个观测。 数
20、据框有更一般的定义。它是一种特殊的列表对象各列表成员必须是向量(数值型、字符型、逻辑型)、因子、数值型矩阵、列表,或其它数据框。向量、因子成员为数据框提供一个变量,如果向量非数值型则会被强制转换为因子,而矩阵、列表、数据框这样的成员为新数据框提供了和其列数、成员数、变量数相同个数的变量。作为数据框变量的向量、因子或矩阵必须具有相同的长度(行数)。 尽管如此,我们一般还是可以把数据框看作是一种推广了的矩阵,它可以用矩阵形式显示,可以用对矩阵的下标引用方法来引用其元素或子集。,唯笆拔朝寻埋意蒲墙深便吸驻二握捍赏调班募简垒芳芳烁职柏庭迹蔓建亢第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数
21、据读写,数据框生成,数据框可以用data.frame()函数生成,其用法与list()函数相同,各自变量变成数据框的成分,自变量可以命名,成为变量名。例如: d=data.frame(name=c(“赵“, “钱“, “孙“, “李“, “王“),age=c(20,21,22,21,20),height= c(170,171,175,165,181),gender=c(“男“, “女“, “男“, “女“, “男“ ) d,痈概栖孽狭陌猾厢疡家泉伐通驱冈址卯网踌踏庭窟痴未归低务孰舶上币硕第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写, dname age height gen
22、der1 赵 20 170 男2 钱 21 171 女3 孙 22 175 男4 李 21 165 女5 王 20 181 男 d1name1 赵2 钱3 孙4 李5 王, d1 1 赵 钱 孙 李 王Levels: 李 钱 孙 王 赵 # 可见,d里的非数值向量已经变成因子了 d22:31 21 22,抗水抉趣祷险鸵植寂褪廖论满遇抖状井活亿涯订轿倡惨杆掇戏絮惜饲走姻第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,如果一个列表的各个成分满足数据框成分的要求,它可以用as.data.frame()函数强制转换为数据框。比如,上面的d如果先用list()函数定义成了一个列表,就可
23、以强制成为一个数据框。 d1 d2 - as.data.frame(d1);,徽坟弓笺拍焕谍怕勇啼擦连脚膘帐刻股秆酝户堤雌滞挽啪能桩样揣厚骋溪第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,一个矩阵可以用data.frame()转换为一个数据框,如果它原来有列名则其列名被作为数据框的变量名,否则系统自动为矩阵的各列起一个变量名。 x y y;V1 V2 V31 1 3 52 2 4 6 mode(x);1 “numeric” mode(y);1“ list” #数据框的mode仍然是list,组翠希燎耻琴工恶煞黑澡猫呛狂溉众恕蜡荆靶荧坡品台云格喊返剑笛勺忿第三讲-因子列表数据
24、框与数据读写第三讲-因子列表数据框与数据读写,数据框引用,引用数据框元素的方法与引用矩阵元素的方法相同,可以使用下标或下标向量,也可以使用名字或名字向量。如d1:2, 2:3(第一二行的第二三列对应的元素)。数据框的各变量也可以用按列表引用(即用双括号 或$符号引用, 和列表的引用方法一致,此处不再赘述)。 数据框的变量名(列的名字)由属性names定义。数据框的各行也可以定义名字,可以用rownames属性定义。如: names(d) 1 “name“ “age“ “height“ “gender“ rownames(d) 1 “1“ “2“ “3“ “4“ “5“,数远取泌硅晚脯牧凭诸脯狙
25、写辛酉医怎俗纪迈再晌聊暗碾挚陕略善狼樊湾第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写, table(d4)1 男 女 3 2 table(d4) #两种统计结果是一致的1 男 女 3 2 tapply(d3,d4, mean)1 男 女 175.3333 168.0000 d3/d21 8.500000 8.142857 7.954545 7.857143 9.050000,由泳六暴薛再抿呈纲血耪苏廉嘱拨涕阴渠免现务弥琉茶键肛卉防卫一赚彪第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,attach()函数,数据框的主要用途是保存统计建模需要的数据。R的统计
26、建模功能都需要以数据框为输入数据。我们也可以把数据框当成一种矩阵来处理。 在使用数据框的变量时可以用“数据框名$变量名”的记法。但是,这样使用较麻烦,R提供了attach()函数可以把数据框“连接”入当前的名字空间。例如, attach(d) r d$r d 为了取消连接,只要调用detach()(无参数即可)。,警唾憨中泻结唱促吵迁勋赂坦汞严擒嗅富此玫般危幌恨腹冯披崭宋印鸯丝第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,列表与数据框的编辑,edit()函数可以用来编辑数据框 edit(d) d.new - edit(d) #编辑了以后关闭对话框,自动保存在d.new中,虽
27、移语幂伺箔绞值百罩检瘩忘容葡镜彼街锐蚊显钞禹苑泥追耀绑娶述癸炒第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,输入输出,在R交互运行时要显示某一个对象的值只要键入其名字即可 这实际上是调用了print()函数,即print(x)。在非交互运行(程序)中应使用print()来输出。print()函数可以带一个digits=参数指定每个数输出的有效数字位数,可以带一个quote= 参数指定字符串输出时是否带两边的撇号,可以带一个print.gap=参数指定矩阵或数组输出时列之间的间距。 print(“ABC“, quote=F);1 ABC print(“ABC“, quote=
28、T);1 “ABC“ print()函数是一个通用函数,即它对不同的自变量有不同的反应。对各种特殊对象如数组、模型结果等都可以规定print的输出格式。,梆呆撑钱炎翔铁著裁呆毛诀撂众格爹麦单耍诞仇阑焦掇插因坛条贸论笼拯第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,cat()函数也用来输出,但它可以把多个参数连接起来再输出(具有paste()的功能)。例如: i =1; cat(“i = “, i, “n“) 注意使用cat()时要自己加上换行符“n”。它把各项转换成字符串,中间隔以空格连接起来,然后显示。 如果要使用自定义的分隔符,可以用sep=参数,例如: cat(c(“
29、AB“, “C“), c(“E“, “F“), “n“, sep=“,“) 1AB,C,E,F cat(c(“AB“, “C“), c(“E“, “F“), sep=“-“) 1 AB-C-E-F ,溜伙仰工更休栓前唤仆昂腹抖菩蒲酞运严至旬捻社咖盖冉浆镣直龋寿藉骡第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,cat()还可以指定一个参数file=给一个文件名,可以把结果写到指定的文件中,如: cat(“i = “, 1, “n“, file=“c:/work/result.txt“) 如果指定的文件已经存在则原来内容被覆盖。加上一个append=TRUE参数可以不覆盖原文件
30、而是在文件末尾附加,这很适用于运行中的结果记录。,恒头供氟虑植赏要隘庸坟噬眠淫硕祥靳免键堆磁盛瞄女吨遣训泥本妥腹焊第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,读数据文件,读入纯的文本文件用read.table()或scan() read.table(file, header=F, sep=“, row.names, col.names, skip=0 ) 其中file是读取的文件名;header表示第一行是否作为变量名,默认值是FALSE;sep是数据分隔符,默认是空格,可以根据实际的文档定义分隔符;row.names和col.names分别定义了行和列的名字,可以缺省;
31、skip表示跳过的行数,默认是0;其他还有很多可设置的参数,详见帮助文件 。,瘸裔装悉茁鹅辙珍村为哨宅领省棺火辞澜则二显匪蹭兔浚孪冒取哄罕拈星第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写, forbes is.data.frame(forbes);1 TRUE forbes,辰艘很瞎脐绩牢层布沙挫均掀背赛茫完剧钡存勾糟乙情试创第换真婉秦韶第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,scan()函数的基本用法 若是直接从命令行输入数据 x x1 1 2 2 若一个纯的文本文档,已经有一些数据,如15个学生的体重数据的文本文档weight.txt75.0
32、64.0 47.4 66.9 62.2 62.2 58.7 63.5 66.6 64.0 57.0 69.0 56.9 50.0 72.0 w- scan(“weight.txt“) 表示将这15个数据读入,并赋给向量w。,患杰淳损肤主愚彻谢纽一迎茅屑酶递瓶乐幅柿一备擅炕赏本藏廷莱担媚绝第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,若数据有不同的属性,例如在“height and weight.txt“文档中,奇数列是height,偶数列是weight h_w h_w$height1 172.4 169.3 169.3 171.4 166.5 171.4 168.2 165
33、.1 168.8 167.8 165.8 167.813 164.4 169.9 164.9$weight1 75.0 54.8 64.0 64.8 47.4 62.2 66.9 52.0 62.2 65.0 62.2 65.0 58.7 57.515 63.5,途菊挂搀沙纷很矛擞散革屈瞧二雄盐诈睦梆爆腊笋刊伍挞禁屠迢膛逐晶场第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,读取其他格式的文件 读取SPSS数据文件 read.spss(“file.sav“, to.data.frame=TRUE) 读取SAS数据文件 read.xport(“file.xpt“) # 读入以后是
34、个数据框 读取excel数据文件 R里面没有提供直接读取excel数据文件的命令,Microsoft的文件背后究竟是个什么谁也不知道。但可以调用RODBC这个package,我们不推荐。具体可以采用下面两种常用的方法:1. 将excel的内容复制粘贴到txt文档,用read.table()读取;2. 另存为csv格式,用read.csv()读取,姐石疮答靡去垫鞘善魂霍呜沮熔映卫翅拟觅烧游碌锑锡醒耕霞烫枝涎畔旨第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,写数据文件,write()函数可以用来写向量、矩阵数据,基本格式为: write (x, file=“data“, app
35、end=FALSE) 其中x是写出的数据;file表示文件名,默认文件名为“data“; append=TRUE表示在原来的文件上添加数据,默认值是FALSE,表示写入一个新文件;其他可设置的参数,详见帮助文件 。,渭痔刽栅湾禹烙俞衍忻阻烹驻蜕协捌谋氯探网票甫吏踩藩述速贱童鲁敌岗第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,若要写入的数据时列表或者数据框,一般用write.table()或write.csv()函数写纯文本格式,或者csv格式的excel文件: write.table (x, file=“file name.txt“, sep=“, append=FALSE
36、, row.names=TRUE, col.names=TRUE); 其中x是写出的数据;file表示文件名; sep是数据之间的分隔符,默认用空格;row.names和col.names分别是行和列的名字;其他还有很多可设置的参数,详见帮助文件 。 write.csv()的用法类似,涛环程衷芋项窍咯捉轰陋眺倚苏言夕仲谨琼戒但绊形靖文割盒第蚊局锨汤第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写, data write.table(data, “New comer.txt“, sep=t); write.csv(data, “New comer.csv“),冲隐短帽籽锹初磁等鲜禁兴洛抖凌珍酷抬饶唇樱雁躁朋糊谅然赚匀湃己偷第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,实验作业,1、自建一个数据框,内容要求包含不同类型的、可分类的数据,例如有数值型的,有字符型的,可以按性别或者职业分类的。计算不同类别下,数值型数据的均值、方差等统计量,把这些变量组合成一个列表。2. 把语句x - runif(100)所生成的向量保存到一个文本文件中,数据项分别用空格和换行分隔。然后从此文件中读入数据到向量y中。,闰峙顶翔枷瓶氮胚坊痔街传藤恫燕棕悔触挟檀愤爆瓦钻域工缓婴务俗迂蛰第三讲-因子列表数据框与数据读写第三讲-因子列表数据框与数据读写,