问题
根据列的名称从数据框中选择列。
解决方案
下面这个表达式选择单列数据:
代码
dfrm[[ “name” ]]
这会得到一列名为name的数据。
代码
dfrm$name
这句命令的效果是一样的,只是语法形式不同。选择一列或多列数据将其打包成一个数据框,可以用列表表达式:
代码
dfrm[ “name” ]
这条命令选中了一列数据,并将其当如一个数据框对象中。
代码
dfrm[ c(“name1″,”name2”, “name3”) ]
选择多列数据,并将它们放入一个数据框中。
还可以使用矩阵风格的下标来选择一列或多列数据:
代码
dfrm[, “name”]
可以选择一列数据。
代码
dfrm[, c(“name1″,”name2”, …, “namek”)]
可以选择多列数据,并将其包装成数据框。
务必再提醒一下,根据选择的是一列数据还是多列数据,矩阵风格的下标能返回两种不同的数据类型(向量或数据框)。
讨论
数据框中的每一列都必须有名称。如果知道所需的列的名称,那么通过名称选取数据通常都会比根据列的位置选取数据要直观方便。这里介绍的方法跟第十招中介绍的按位置选择数据很类似。区别就是用列的名称替换了列的位置。所有在第十招中的结论也都适用于这里:
dfrm[[ “name” ]]返回一列数据,而不是数据框。
dfrm[ c(“name1″,”name2”, “name3”) ]返回的是数据框,而不是列。
dfrm[“name”]是前一个表达式的特例,返回的是数据框,而不是列。
矩阵风格的下标既可以返回一列数据,也可以返回一个数据框,使用的时候要小心。见第十招中的相关讨论,和drop=FALSE的使用。
这里还有一条新的:
代码
dfrm$name
这跟dfrm[[“name” ]]的效果是一模一样的,但输入更方便,也更易读。
扩展阅读
关于列的选择,请参阅第十招中的更多信息。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。