Dataframe
Most data sets you will be working with will be stored as data frames. By the end of this chapter focused on R basics, you will be able to create a data frame, select interesting parts of a data frame and order a data frame according to certain variables.
数据框与矩阵很类似,不同点在于矩阵的每一列的数据类型都是一样的,而数据框里面不同列的数据可以是不同的类型。
用自带数据mtcars
来探究一下dataframe:
使用
head()
,
tail()
:
eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiJoZWFkKG10Y2FycylcbnRhaWwobXRjYXJzKSJ9
使用
str()
:
eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiJzdHIobXRjYXJzKSJ9
建一个数据框:
- 先建立需要的向量
- 把这些向量放进
data.frame()
函数,用,
隔开
- 将上述数据集命名为
students_scores
:
eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiJzdHVkZW50cyA8LSBjKFwiQW15XCIsIFwiQnJhaW5cIiwgXCJDaWNpXCIsIFwiRGF2aWRcIiwgXCJKYWNraWVcIilcbnNleDwtIGZhY3RvcihjKFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiLCBcIk1hbGVcIiwgXCJGZW1hbGVcIikpXG5tYXRoX3Njb3JlPC1jKDEwMCwgODAsIDcwLCA5NSwgOTkpXG5lbmdsaXNoX3Njb3JlPC1jKDk2LCA4NiwgNzcsIDk5LDEwMClcbmRhbmNlX3Njb3JlPC1jKDgwLCA3MCwgODUsIDk2LCA5NylcbmNvbGxlZ2VfYWRtaXNzaW9uPC1jKFRSVUUsIEZBTFNFLCBUUlVFLCBGQUxTRSwgVFJVRSlcbiMgQ3JlYXRlIGEgZGF0YSBmcmFtZSBmcm9tIHRoZSB2ZWN0b3JzXG5zdHVkZW50c19zY29yZXMgPC0gIiwic29sdXRpb24iOiJzdHVkZW50cyA8LSBjKFwiQW15XCIsIFwiQnJhaW5cIiwgXCJDaWNpXCIsIFwiRGF2aWRcIiwgXCJKYWNraWVcIilcbnNleDwtIGZhY3RvcihjKFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiLCBcIk1hbGVcIiwgXCJGZW1hbGVcIikpXG5tYXRoX3Njb3JlPC1jKDEwMCwgODAsIDcwLCA5NSwgOTkpXG5lbmdsaXNoX3Njb3JlPC1jKDk2LCA4NiwgNzcsIDk5LDEwMClcbmRhbmNlX3Njb3JlPC1jKDgwLCA3MCwgODUsIDk2LCA5NylcbmNvbGxlZ2VfYWRtaXNzaW9uPC1jKFRSVUUsIEZBTFNFLCBUUlVFLCBGQUxTRSwgVFJVRSlcbiMgQ3JlYXRlIGEgZGF0YSBmcmFtZSBmcm9tIHRoZSB2ZWN0b3JzXG5zdHVkZW50c19zY29yZXMgPC0gZGF0YS5mcmFtZShzdHVkZW50cywgc2V4LCBtYXRoX3Njb3JlLCBlbmdsaXNoX3Njb3JlLCBkYW5jZV9zY29yZSwgY29sbGVnZV9hZG1pc3Npb24pIn0=
用
str()
查看我们的数据:
eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6InN0dWRlbnRzIDwtIGMoXCJBbXlcIiwgXCJCcmFpblwiLCBcIkNpY2lcIiwgXCJEYXZpZFwiLCBcIkphY2tpZVwiKVxuc2V4PC0gZmFjdG9yKGMoXCJGZW1hbGVcIiwgXCJNYWxlXCIsIFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiKSlcbm1hdGhfc2NvcmU8LWMoMTAwLCA4MCwgNzAsIDk1LCA5OSlcbmVuZ2xpc2hfc2NvcmU8LWMoOTYsIDg2LCA3NywgOTksMTAwKVxuZGFuY2Vfc2NvcmU8LWMoODAsIDcwLCA4NSwgOTYsIDk3KVxuY29sbGVnZV9hZG1pc3Npb248LWMoVFJVRSwgRkFMU0UsIFRSVUUsIEZBTFNFLCBUUlVFKVxuIyBDcmVhdGUgYSBkYXRhIGZyYW1lIGZyb20gdGhlIHZlY3RvcnNcbnN0dWRlbnRzX3Njb3JlcyA8LSBkYXRhLmZyYW1lKHN0dWRlbnRzLCBzZXgsIG1hdGhfc2NvcmUsIGVuZ2xpc2hfc2NvcmUsIGRhbmNlX3Njb3JlLCBjb2xsZWdlX2FkbWlzc2lvbikiLCJzYW1wbGUiOiJzdHIoKSIsInNvbHV0aW9uIjoic3RyKHN0dWRlbnRzX3Njb3JlcykifQ==
跟矩阵类似,我们也能从数据框里取子集:
取大家的数学成绩的三种方法:
eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6InN0dWRlbnRzIDwtIGMoXCJBbXlcIiwgXCJCcmFpblwiLCBcIkNpY2lcIiwgXCJEYXZpZFwiLCBcIkphY2tpZVwiKVxuc2V4PC0gZmFjdG9yKGMoXCJGZW1hbGVcIiwgXCJNYWxlXCIsIFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiKSlcbm1hdGhfc2NvcmU8LWMoMTAwLCA4MCwgNzAsIDk1LCA5OSlcbmVuZ2xpc2hfc2NvcmU8LWMoOTYsIDg2LCA3NywgOTksMTAwKVxuZGFuY2Vfc2NvcmU8LWMoODAsIDcwLCA4NSwgOTYsIDk3KVxuY29sbGVnZV9hZG1pc3Npb248LWMoVFJVRSwgRkFMU0UsIFRSVUUsIEZBTFNFLCBUUlVFKVxuIyBDcmVhdGUgYSBkYXRhIGZyYW1lIGZyb20gdGhlIHZlY3RvcnNcbnN0dWRlbnRzX3Njb3JlcyA8LSBkYXRhLmZyYW1lKHN0dWRlbnRzLCBzZXgsIG1hdGhfc2NvcmUsIGVuZ2xpc2hfc2NvcmUsIGRhbmNlX3Njb3JlLCBjb2xsZWdlX2FkbWlzc2lvbikiLCJzYW1wbGUiOiJzdHVkZW50c19zY29yZXNbLDNdXG5cbnN0dWRlbnRzX3Njb3Jlc1ssXCJtYXRoX3Njb3JlXCJdXG5cbnN0dWRlbnRzX3Njb3JlcyRtYXRoX3Njb3JlIiwic29sdXRpb24iOiJzdHVkZW50c19zY29yZXNbLDNdXG5cbnN0dWRlbnRzX3Njb3Jlc1ssXCJtYXRoX3Njb3JlXCJdXG5cbnN0dWRlbnRzX3Njb3JlcyRtYXRoX3Njb3JlIn0=
提取最后两名学生的数学和英语成绩:
eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6InN0dWRlbnRzIDwtIGMoXCJBbXlcIiwgXCJCcmFpblwiLCBcIkNpY2lcIiwgXCJEYXZpZFwiLCBcIkphY2tpZVwiKVxuc2V4PC0gZmFjdG9yKGMoXCJGZW1hbGVcIiwgXCJNYWxlXCIsIFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiKSlcbm1hdGhfc2NvcmU8LWMoMTAwLCA4MCwgNzAsIDk1LCA5OSlcbmVuZ2xpc2hfc2NvcmU8LWMoOTYsIDg2LCA3NywgOTksMTAwKVxuZGFuY2Vfc2NvcmU8LWMoODAsIDcwLCA4NSwgOTYsIDk3KVxuY29sbGVnZV9hZG1pc3Npb248LWMoVFJVRSwgRkFMU0UsIFRSVUUsIEZBTFNFLCBUUlVFKVxuIyBDcmVhdGUgYSBkYXRhIGZyYW1lIGZyb20gdGhlIHZlY3RvcnNcbnN0dWRlbnRzX3Njb3JlcyA8LSBkYXRhLmZyYW1lKHN0dWRlbnRzLCBzZXgsIG1hdGhfc2NvcmUsIGVuZ2xpc2hfc2NvcmUsIGRhbmNlX3Njb3JlLCBjb2xsZWdlX2FkbWlzc2lvbikiLCJzYW1wbGUiOiJzdHVkZW50c19zY29yZXNbICwgXSIsInNvbHV0aW9uIjoic3R1ZGVudHNfc2NvcmVzWzQ6NSwgMzo0XSJ9
提取前三名学生的性别:
eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6InN0dWRlbnRzIDwtIGMoXCJBbXlcIiwgXCJCcmFpblwiLCBcIkNpY2lcIiwgXCJEYXZpZFwiLCBcIkphY2tpZVwiKVxuc2V4PC0gZmFjdG9yKGMoXCJGZW1hbGVcIiwgXCJNYWxlXCIsIFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiKSlcbm1hdGhfc2NvcmU8LWMoMTAwLCA4MCwgNzAsIDk1LCA5OSlcbmVuZ2xpc2hfc2NvcmU8LWMoOTYsIDg2LCA3NywgOTksMTAwKVxuZGFuY2Vfc2NvcmU8LWMoODAsIDcwLCA4NSwgOTYsIDk3KVxuY29sbGVnZV9hZG1pc3Npb248LWMoVFJVRSwgRkFMU0UsIFRSVUUsIEZBTFNFLCBUUlVFKVxuIyBDcmVhdGUgYSBkYXRhIGZyYW1lIGZyb20gdGhlIHZlY3RvcnNcbnN0dWRlbnRzX3Njb3JlcyA8LSBkYXRhLmZyYW1lKHN0dWRlbnRzLCBzZXgsIG1hdGhfc2NvcmUsIGVuZ2xpc2hfc2NvcmUsIGRhbmNlX3Njb3JlLCBjb2xsZWdlX2FkbWlzc2lvbikiLCJzYW1wbGUiOiJzdHVkZW50c19zY29yZXNbICwgXSIsInNvbHV0aW9uIjoic3R1ZGVudHNfc2NvcmVzWzE6MywgXCJzZXhcIl0ifQ==
看一看,谁被大学录取了?
eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6InN0dWRlbnRzIDwtIGMoXCJBbXlcIiwgXCJCcmFpblwiLCBcIkNpY2lcIiwgXCJEYXZpZFwiLCBcIkphY2tpZVwiKVxuc2V4PC0gZmFjdG9yKGMoXCJGZW1hbGVcIiwgXCJNYWxlXCIsIFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiKSlcbm1hdGhfc2NvcmU8LWMoMTAwLCA4MCwgNzAsIDk1LCA5OSlcbmVuZ2xpc2hfc2NvcmU8LWMoOTYsIDg2LCA3NywgOTksMTAwKVxuZGFuY2Vfc2NvcmU8LWMoODAsIDcwLCA4NSwgOTYsIDk3KVxuY29sbGVnZV9hZG1pc3Npb248LWMoVFJVRSwgRkFMU0UsIFRSVUUsIEZBTFNFLCBUUlVFKVxuIyBDcmVhdGUgYSBkYXRhIGZyYW1lIGZyb20gdGhlIHZlY3RvcnNcbnN0dWRlbnRzX3Njb3JlcyA8LSBkYXRhLmZyYW1lKHN0dWRlbnRzLCBzZXgsIG1hdGhfc2NvcmUsIGVuZ2xpc2hfc2NvcmUsIGRhbmNlX3Njb3JlLCBjb2xsZWdlX2FkbWlzc2lvbikiLCJzYW1wbGUiOiJtYXRoX3Njb3JlIiwic29sdXRpb24iOiJtYXRoX3Njb3JlXG5cbm9yZGVyKG1hdGhfc2NvcmUpIn0=
看到成绩单,我们就忍不住要排个名次:
可用order()
来实现,我们现用向量试一试,理解一下这个函数,排一下数学成绩:
从上面我们可以知道order
给我们返回的是每个位置元素的排名,从小到大。 我们可以给math_score进一步排序:
eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiJtYXRoX3Njb3JlPC1jKDEwMCwgODAsIDcwLCA5NSwgOTkpXG5vcmRlcihtYXRoX3Njb3JlKVxuXG5tYXRoX3Njb3JlW29yZGVyKG1hdGhfc2NvcmUpXSJ9
我们现在根据大家的数学成绩给大家排序吧!
eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6InN0dWRlbnRzIDwtIGMoXCJBbXlcIiwgXCJCcmFpblwiLCBcIkNpY2lcIiwgXCJEYXZpZFwiLCBcIkphY2tpZVwiKVxuc2V4PC0gZmFjdG9yKGMoXCJGZW1hbGVcIiwgXCJNYWxlXCIsIFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiKSlcbm1hdGhfc2NvcmU8LWMoMTAwLCA4MCwgNzAsIDk1LCA5OSlcbmVuZ2xpc2hfc2NvcmU8LWMoOTYsIDg2LCA3NywgOTksMTAwKVxuZGFuY2Vfc2NvcmU8LWMoODAsIDcwLCA4NSwgOTYsIDk3KVxuY29sbGVnZV9hZG1pc3Npb248LWMoVFJVRSwgRkFMU0UsIFRSVUUsIEZBTFNFLCBUUlVFKVxuIyBDcmVhdGUgYSBkYXRhIGZyYW1lIGZyb20gdGhlIHZlY3RvcnNcbnN0dWRlbnRzX3Njb3JlcyA8LSBkYXRhLmZyYW1lKHN0dWRlbnRzLCBzZXgsIG1hdGhfc2NvcmUsIGVuZ2xpc2hfc2NvcmUsIGRhbmNlX3Njb3JlLCBjb2xsZWdlX2FkbWlzc2lvbikiLCJzYW1wbGUiOiJtYXRoX3JhbmsgPC0gb3JkZXIobWF0aF9zY29yZSlcblxuIyAiLCJzb2x1dGlvbiI6Im1hdGhfcmFuayA8LSBvcmRlcihtYXRoX3Njb3JlKVxuXG4jIFxuc3R1ZGVudHNfc2NvcmVzW21hdGhfcmFuaywgXSJ9
完结撒花~
