R–按列的内容对数据帧进行排序

2月12日,二千零一十
通过

(本文首次发表于 发展心态,并对 188bet appR博主

让我们研究一下如何根据列的值对数据帧的内容进行排序。

>nummeople=10>性别=样本(c(“男”,“女”),nummeople,replace=t)>年龄=样本(14:102,纽曼人,替换=t)>收入=样本(20:150,纽曼人,替换=t)>未成年人=年龄<18岁

如果你已经习惯了Java或传统的编程语言,最后一句话可能会让人惊讶。而不是成为一个布尔值/真值,小调实际上是真值的向量,年龄栏中每行一个。它相当于Java中更冗长的代码:

int[]年龄=…;对于(int i=0;i<income.length;I++)小调[I]=年龄[I]<18;

正如所料,次要值是一个向量:

>模式(次要)[1]“逻辑”>次要[1]假假假假假假假真假假假

接下来我们创建一个数据帧,将我们的各种向量组合到数据结构的列中:

>人口=数据。框架(性别=性别,年龄=年龄,收入=收入,minor=minor)> population sex age income minor1    male  68    150 FALSE2    male  48     21 FALSE3  female  68     58 FALSE4  female  27    124 FALSE5  female  84    103 FALSE6    male  92    112 FALSE7    male  35     65 FALSE8  female  15    117  TRUE9    male  89     95 FALSE10   malE 26 54假

争论(性=性,年龄=年龄,收入=收入,minor=minor)为列指定与我最初命名向量相同的名称;我可以很容易地给他们打电话。例如,

> data.frame(a=sex,B=年龄,收入=A B 160160160160160160160160160160;160160;男48;21假3;女68;58假4;女27 124假5;女84 103假6 160160160160\160\160\160;男48;男48;21假3假10_男26_54假

但我更喜欢我之前给出的更具描述性的标签。

> population     sex   age income minor1    male  68    150 FALSE2    male  48     21 FALSE3  female  68     58 FALSE4  female  27    124 FALSE5  female  84    103 FALSE6    male  92    112 FALSE7    male  35     65 FALSE8  female  15    117  TRUE9    male  89     95 FALSE10   male  26__54假

现在让我们假设我们想按人们的年龄排序。要做到这一点,只需一行:

> population[order(population$age),] sex age income minor8  female  15    117  TRUE10   male  26     54 FALSE4  female  27    124 FALSE7    male  35     65 FALSE2    male  48     21 FALSE1    male  68    150 FALSE3  female  68     58 FALSE5  female  84    103 FALSE9    male  89     95 FALSE6男92 112假

这不是魔法;您可以使用相同的语法从任何数据帧中选择任意行:

>人口性别年龄收入Minor1男68 150假2男48 21假3女68 58假

order函数只按排序顺序返回行的索引。

>秩序(人口年龄)【1】8 10 4 7 2 1 3 5 9 6

注意$syntax;您可以使用美元符号和列的名称来选择数据框中的列。您可以使用“名称”函数检索数据框中列的名称。

>姓名(人口)[1]“性别”“年龄”“收入”“未成年人”>人口$收入[1]150 21 58 124 103 112 65 117 95 54>收入[1]150 21 58 124 103 112 65 117 95 54

正如你所看到的,它们完全一样。

所以我们真正要做的是命令

人口[顺序(人口$年龄),]

人口

注意尾随逗号;这意味着取所有的列。如果我们只想要某些专栏,我们可以在这个逗号后面指定。

>人口[人口[秩序(人口$年龄),C(1,2)]性别年龄8;女性1510;男性;264;女性;277;352 160;男性;683;女性;685;女性;849 160160;896 160;男92

留下评论作者,请关注他们博客上的链接和评论: 发展心态.

188bet appR博客提供 每日电子邮件更新金宝搏网址 R新闻与 教程关于以下主题: 数据科学大数据, r作业,可视化(可视化) GGPROTT2箱形图地图动画)程序设计(程序) 演播室斯威夫特乳胶SQL日食吉特哈多普刮网)统计 回归主成分分析时间序列交易) and more...



如果你走这么远,为什么不 订阅更新 从站点?选择您的口味: 电子邮件推特1188bet app,或 脸谱网

注释已关闭。

搜索R-Blo188bet appggers


赞助商

千万不要错过更新!
订阅R-Bloggers188bet app接收
最新R帖子的电子邮件。
(您将不再看到此消息。)

单击此处关闭(此弹出窗口将不再出现)