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

建一个数据框:

eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiJzdHVkZW50cyA8LSBjKFwiQW15XCIsIFwiQnJhaW5cIiwgXCJDaWNpXCIsIFwiRGF2aWRcIiwgXCJKYWNraWVcIilcbnNleDwtIGZhY3RvcihjKFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiLCBcIk1hbGVcIiwgXCJGZW1hbGVcIikpXG5tYXRoX3Njb3JlPC1jKDEwMCwgODAsIDcwLCA5NSwgOTkpXG5lbmdsaXNoX3Njb3JlPC1jKDk2LCA4NiwgNzcsIDk5LDEwMClcbmRhbmNlX3Njb3JlPC1jKDgwLCA3MCwgODUsIDk2LCA5NylcbmNvbGxlZ2VfYWRtaXNzaW9uPC1jKFRSVUUsIEZBTFNFLCBUUlVFLCBGQUxTRSwgVFJVRSlcbiMgQ3JlYXRlIGEgZGF0YSBmcmFtZSBmcm9tIHRoZSB2ZWN0b3JzXG5zdHVkZW50c19zY29yZXMgPC0gIiwic29sdXRpb24iOiJzdHVkZW50cyA8LSBjKFwiQW15XCIsIFwiQnJhaW5cIiwgXCJDaWNpXCIsIFwiRGF2aWRcIiwgXCJKYWNraWVcIilcbnNleDwtIGZhY3RvcihjKFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiLCBcIk1hbGVcIiwgXCJGZW1hbGVcIikpXG5tYXRoX3Njb3JlPC1jKDEwMCwgODAsIDcwLCA5NSwgOTkpXG5lbmdsaXNoX3Njb3JlPC1jKDk2LCA4NiwgNzcsIDk5LDEwMClcbmRhbmNlX3Njb3JlPC1jKDgwLCA3MCwgODUsIDk2LCA5NylcbmNvbGxlZ2VfYWRtaXNzaW9uPC1jKFRSVUUsIEZBTFNFLCBUUlVFLCBGQUxTRSwgVFJVRSlcbiMgQ3JlYXRlIGEgZGF0YSBmcmFtZSBmcm9tIHRoZSB2ZWN0b3JzXG5zdHVkZW50c19zY29yZXMgPC0gZGF0YS5mcmFtZShzdHVkZW50cywgc2V4LCBtYXRoX3Njb3JlLCBlbmdsaXNoX3Njb3JlLCBkYW5jZV9zY29yZSwgY29sbGVnZV9hZG1pc3Npb24pIn0=
str()查看我们的数据:
eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6InN0dWRlbnRzIDwtIGMoXCJBbXlcIiwgXCJCcmFpblwiLCBcIkNpY2lcIiwgXCJEYXZpZFwiLCBcIkphY2tpZVwiKVxuc2V4PC0gZmFjdG9yKGMoXCJGZW1hbGVcIiwgXCJNYWxlXCIsIFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiKSlcbm1hdGhfc2NvcmU8LWMoMTAwLCA4MCwgNzAsIDk1LCA5OSlcbmVuZ2xpc2hfc2NvcmU8LWMoOTYsIDg2LCA3NywgOTksMTAwKVxuZGFuY2Vfc2NvcmU8LWMoODAsIDcwLCA4NSwgOTYsIDk3KVxuY29sbGVnZV9hZG1pc3Npb248LWMoVFJVRSwgRkFMU0UsIFRSVUUsIEZBTFNFLCBUUlVFKVxuIyBDcmVhdGUgYSBkYXRhIGZyYW1lIGZyb20gdGhlIHZlY3RvcnNcbnN0dWRlbnRzX3Njb3JlcyA8LSBkYXRhLmZyYW1lKHN0dWRlbnRzLCBzZXgsIG1hdGhfc2NvcmUsIGVuZ2xpc2hfc2NvcmUsIGRhbmNlX3Njb3JlLCBjb2xsZWdlX2FkbWlzc2lvbikiLCJzYW1wbGUiOiJzdHIoKSIsInNvbHV0aW9uIjoic3RyKHN0dWRlbnRzX3Njb3JlcykifQ==

跟矩阵类似,我们也能从数据框里取子集:

取大家的数学成绩的三种方法:

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6InN0dWRlbnRzIDwtIGMoXCJBbXlcIiwgXCJCcmFpblwiLCBcIkNpY2lcIiwgXCJEYXZpZFwiLCBcIkphY2tpZVwiKVxuc2V4PC0gZmFjdG9yKGMoXCJGZW1hbGVcIiwgXCJNYWxlXCIsIFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiKSlcbm1hdGhfc2NvcmU8LWMoMTAwLCA4MCwgNzAsIDk1LCA5OSlcbmVuZ2xpc2hfc2NvcmU8LWMoOTYsIDg2LCA3NywgOTksMTAwKVxuZGFuY2Vfc2NvcmU8LWMoODAsIDcwLCA4NSwgOTYsIDk3KVxuY29sbGVnZV9hZG1pc3Npb248LWMoVFJVRSwgRkFMU0UsIFRSVUUsIEZBTFNFLCBUUlVFKVxuIyBDcmVhdGUgYSBkYXRhIGZyYW1lIGZyb20gdGhlIHZlY3RvcnNcbnN0dWRlbnRzX3Njb3JlcyA8LSBkYXRhLmZyYW1lKHN0dWRlbnRzLCBzZXgsIG1hdGhfc2NvcmUsIGVuZ2xpc2hfc2NvcmUsIGRhbmNlX3Njb3JlLCBjb2xsZWdlX2FkbWlzc2lvbikiLCJzYW1wbGUiOiJzdHVkZW50c19zY29yZXNbLDNdXG5cbnN0dWRlbnRzX3Njb3Jlc1ssXCJtYXRoX3Njb3JlXCJdXG5cbnN0dWRlbnRzX3Njb3JlcyRtYXRoX3Njb3JlIiwic29sdXRpb24iOiJzdHVkZW50c19zY29yZXNbLDNdXG5cbnN0dWRlbnRzX3Njb3Jlc1ssXCJtYXRoX3Njb3JlXCJdXG5cbnN0dWRlbnRzX3Njb3JlcyRtYXRoX3Njb3JlIn0=
提取最后两名学生的数学和英语成绩:
eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6InN0dWRlbnRzIDwtIGMoXCJBbXlcIiwgXCJCcmFpblwiLCBcIkNpY2lcIiwgXCJEYXZpZFwiLCBcIkphY2tpZVwiKVxuc2V4PC0gZmFjdG9yKGMoXCJGZW1hbGVcIiwgXCJNYWxlXCIsIFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiKSlcbm1hdGhfc2NvcmU8LWMoMTAwLCA4MCwgNzAsIDk1LCA5OSlcbmVuZ2xpc2hfc2NvcmU8LWMoOTYsIDg2LCA3NywgOTksMTAwKVxuZGFuY2Vfc2NvcmU8LWMoODAsIDcwLCA4NSwgOTYsIDk3KVxuY29sbGVnZV9hZG1pc3Npb248LWMoVFJVRSwgRkFMU0UsIFRSVUUsIEZBTFNFLCBUUlVFKVxuIyBDcmVhdGUgYSBkYXRhIGZyYW1lIGZyb20gdGhlIHZlY3RvcnNcbnN0dWRlbnRzX3Njb3JlcyA8LSBkYXRhLmZyYW1lKHN0dWRlbnRzLCBzZXgsIG1hdGhfc2NvcmUsIGVuZ2xpc2hfc2NvcmUsIGRhbmNlX3Njb3JlLCBjb2xsZWdlX2FkbWlzc2lvbikiLCJzYW1wbGUiOiJzdHVkZW50c19zY29yZXNbICwgXSIsInNvbHV0aW9uIjoic3R1ZGVudHNfc2NvcmVzWzQ6NSwgMzo0XSJ9
提取前三名学生的性别:
eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6InN0dWRlbnRzIDwtIGMoXCJBbXlcIiwgXCJCcmFpblwiLCBcIkNpY2lcIiwgXCJEYXZpZFwiLCBcIkphY2tpZVwiKVxuc2V4PC0gZmFjdG9yKGMoXCJGZW1hbGVcIiwgXCJNYWxlXCIsIFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiKSlcbm1hdGhfc2NvcmU8LWMoMTAwLCA4MCwgNzAsIDk1LCA5OSlcbmVuZ2xpc2hfc2NvcmU8LWMoOTYsIDg2LCA3NywgOTksMTAwKVxuZGFuY2Vfc2NvcmU8LWMoODAsIDcwLCA4NSwgOTYsIDk3KVxuY29sbGVnZV9hZG1pc3Npb248LWMoVFJVRSwgRkFMU0UsIFRSVUUsIEZBTFNFLCBUUlVFKVxuIyBDcmVhdGUgYSBkYXRhIGZyYW1lIGZyb20gdGhlIHZlY3RvcnNcbnN0dWRlbnRzX3Njb3JlcyA8LSBkYXRhLmZyYW1lKHN0dWRlbnRzLCBzZXgsIG1hdGhfc2NvcmUsIGVuZ2xpc2hfc2NvcmUsIGRhbmNlX3Njb3JlLCBjb2xsZWdlX2FkbWlzc2lvbikiLCJzYW1wbGUiOiJzdHVkZW50c19zY29yZXNbICwgXSIsInNvbHV0aW9uIjoic3R1ZGVudHNfc2NvcmVzWzE6MywgXCJzZXhcIl0ifQ==

看一看,谁被大学录取了?

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6InN0dWRlbnRzIDwtIGMoXCJBbXlcIiwgXCJCcmFpblwiLCBcIkNpY2lcIiwgXCJEYXZpZFwiLCBcIkphY2tpZVwiKVxuc2V4PC0gZmFjdG9yKGMoXCJGZW1hbGVcIiwgXCJNYWxlXCIsIFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiKSlcbm1hdGhfc2NvcmU8LWMoMTAwLCA4MCwgNzAsIDk1LCA5OSlcbmVuZ2xpc2hfc2NvcmU8LWMoOTYsIDg2LCA3NywgOTksMTAwKVxuZGFuY2Vfc2NvcmU8LWMoODAsIDcwLCA4NSwgOTYsIDk3KVxuY29sbGVnZV9hZG1pc3Npb248LWMoVFJVRSwgRkFMU0UsIFRSVUUsIEZBTFNFLCBUUlVFKVxuIyBDcmVhdGUgYSBkYXRhIGZyYW1lIGZyb20gdGhlIHZlY3RvcnNcbnN0dWRlbnRzX3Njb3JlcyA8LSBkYXRhLmZyYW1lKHN0dWRlbnRzLCBzZXgsIG1hdGhfc2NvcmUsIGVuZ2xpc2hfc2NvcmUsIGRhbmNlX3Njb3JlLCBjb2xsZWdlX2FkbWlzc2lvbikiLCJzYW1wbGUiOiJtYXRoX3Njb3JlIiwic29sdXRpb24iOiJtYXRoX3Njb3JlXG5cbm9yZGVyKG1hdGhfc2NvcmUpIn0=

看到成绩单,我们就忍不住要排个名次:

可用order()来实现,我们现用向量试一试,理解一下这个函数,排一下数学成绩:

从上面我们可以知道order给我们返回的是每个位置元素的排名,从小到大。 我们可以给math_score进一步排序:

eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiJtYXRoX3Njb3JlPC1jKDEwMCwgODAsIDcwLCA5NSwgOTkpXG5vcmRlcihtYXRoX3Njb3JlKVxuXG5tYXRoX3Njb3JlW29yZGVyKG1hdGhfc2NvcmUpXSJ9

我们现在根据大家的数学成绩给大家排序吧!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6InN0dWRlbnRzIDwtIGMoXCJBbXlcIiwgXCJCcmFpblwiLCBcIkNpY2lcIiwgXCJEYXZpZFwiLCBcIkphY2tpZVwiKVxuc2V4PC0gZmFjdG9yKGMoXCJGZW1hbGVcIiwgXCJNYWxlXCIsIFwiRmVtYWxlXCIsIFwiTWFsZVwiLCBcIkZlbWFsZVwiKSlcbm1hdGhfc2NvcmU8LWMoMTAwLCA4MCwgNzAsIDk1LCA5OSlcbmVuZ2xpc2hfc2NvcmU8LWMoOTYsIDg2LCA3NywgOTksMTAwKVxuZGFuY2Vfc2NvcmU8LWMoODAsIDcwLCA4NSwgOTYsIDk3KVxuY29sbGVnZV9hZG1pc3Npb248LWMoVFJVRSwgRkFMU0UsIFRSVUUsIEZBTFNFLCBUUlVFKVxuIyBDcmVhdGUgYSBkYXRhIGZyYW1lIGZyb20gdGhlIHZlY3RvcnNcbnN0dWRlbnRzX3Njb3JlcyA8LSBkYXRhLmZyYW1lKHN0dWRlbnRzLCBzZXgsIG1hdGhfc2NvcmUsIGVuZ2xpc2hfc2NvcmUsIGRhbmNlX3Njb3JlLCBjb2xsZWdlX2FkbWlzc2lvbikiLCJzYW1wbGUiOiJtYXRoX3JhbmsgPC0gb3JkZXIobWF0aF9zY29yZSlcblxuIyAiLCJzb2x1dGlvbiI6Im1hdGhfcmFuayA8LSBvcmRlcihtYXRoX3Njb3JlKVxuXG4jIFxuc3R1ZGVudHNfc2NvcmVzW21hdGhfcmFuaywgXSJ9

完结撒花~