楼主: syy822
18736 14

[问答] R语言中定性变量的排序 [推广有奖]

  • 2关注
  • 9粉丝

博士生

68%

还不是VIP/贵宾

-

威望
0
论坛币
2364 个
通用积分
2.5333
学术水平
7 点
热心指数
14 点
信用等级
7 点
经验
452 点
帖子
290
精华
0
在线时间
361 小时
注册时间
2011-2-18
最后登录
2021-2-7

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
有一个数据框,第一列是类别变量,有三个水平。后面几列都是定量变量。如何把第一列按类别排序,后面的数据同时跟着变化。
还有一个问题是:对于第二列的数据,想把同一类的加和,得到三个sum值,如何实现?
初学R,好多地方都不懂,还望高手指教!谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 SOSO 如何实现 sos Sum 如何

修身,助人,赚钱,玩天下!
沙发
qoiqpwqr 发表于 2011-10-26 11:03:16 |只看作者 |坛友微信交流群
  1. grp <- factor(sample(c("a", "b", "c"), 20, replace = TRUE))
  2. val1 <- rnorm(20)
  3. val2 <- rnorm(20)
  4. dat <- data.frame(grp = grp, val1 = val1, val2 = val2)
  5. newdat <- dat[order(dat[, 1]), ]
  6. tapply(newdat[, 2], newdat[, 1], sum)
复制代码
已有 5 人评分经验 学术水平 热心指数 信用等级 收起 理由
ryoeng + 1 + 1 热心帮助其他会员
李会超 + 20 + 1 + 1 精彩帖子
aspenroad + 1 + 1 + 1 热心帮助其他会员
syy822 + 1 + 1 + 1 热心帮助其他会员
UNC + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 20  学术水平 + 5  热心指数 + 5  信用等级 + 3   查看全部评分

使用道具

藤椅
syy822 发表于 2011-10-26 15:18:53 |只看作者 |坛友微信交流群
学会了!~太感谢了!!
修身,助人,赚钱,玩天下!

使用道具

板凳
syy822 发表于 2011-10-26 15:20:54 |只看作者 |坛友微信交流群
qoiqpwqr 发表于 2011-10-26 11:03
学会了!~太感谢了!! (刚才忘点回复了你……)
修身,助人,赚钱,玩天下!

使用道具

报纸
kiddbai 发表于 2011-10-26 15:38:43 |只看作者 |坛友微信交流群

对于定性变量有时需要按照自己需要的顺排列,例如系统只会对a、b、c按照字母顺序进行升序或者降序排列,但是如果需要按照某一特定顺序排列就需要用levels参数设定。
例如,我们想按照特定的b、c、a的顺序排列(借用楼上的例子):
  1. dat$grp <- factor(dat$grp, levels=c("b", "c", "a"), ordered=TRUE)
复制代码
这样就可以把因子向量grp重新设定顺序,再次运行newdat和tapply语句就会看到都是按照b、c、a的顺序排列了。
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
zjwzzz + 1 + 1 + 1 精彩帖子
kk22boy + 1 + 1 + 1 学习了,很感谢

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

使用道具

地板
syy822 发表于 2011-10-26 16:19:08 |只看作者 |坛友微信交流群
kiddbai 发表于 2011-10-26 15:38
对于定性变量有时需要按照自己需要的顺排列,例如系统只会对a、b、c按照字母顺序进行升序或者降序排列,但 ...
恩,谢谢啦!~都是高人~
修身,助人,赚钱,玩天下!

使用道具

7
priss111 发表于 2011-10-26 17:31:50 |只看作者 |坛友微信交流群
kiddbai 发表于 2011-10-26 15:38
对于定性变量有时需要按照自己需要的顺排列,例如系统只会对a、b、c按照字母顺序进行升序或者降序排列,但 ...
若果数据量比较大(上万条),
levels=c(?)   ##问号表示想要的排序,
那写levels是不是就比较复杂了?

使用道具

8
priss111 发表于 2011-10-26 17:32:38 |只看作者 |坛友微信交流群
kiddbai 发表于 2011-10-26 15:38
对于定性变量有时需要按照自己需要的顺排列,例如系统只会对a、b、c按照字母顺序进行升序或者降序排列,但 ...
如果数据量比较大(上万条),
那写levels是不是就很麻烦了呢

使用道具

9
kiddbai 发表于 2011-10-27 15:25:42 |只看作者 |坛友微信交流群
priss111 发表于 2011-10-26 17:32
如果数据量比较大(上万条),
那写levels是不是就很麻烦了呢
不会吧,数据上万、上百万条没什么,作为因子水平会有上万个?

levels参数主要还是用来做特定排序的。一般因子水平的数量都是有限的几个,比如性别,只有男女两种,一个学院里的十个八个专业,一个学校二三十个学院之类的,总之是有限的,如果因子水平太多进行某种特定顺序的排序就意义不大了,完全可以直接用默认排序。
另外还可以用Excel做些特殊排序,然后文本函数制作R中使用的字符串就可以了,再写入R文件便于重复使用。

使用道具

10
priss111 发表于 2011-10-27 17:03:37 |只看作者 |坛友微信交流群
kiddbai 发表于 2011-10-27 15:25
不会吧,数据上万、上百万条没什么,作为因子水平会有上万个?

levels参数主要还是用来做特定排序的。 ...
哦,
对的,
因子水平是比较少的...
tks!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 17:11