楼主: xiangweinn
16009 10

[问答] 怎样将矩阵的列转化成 factor [推广有奖]

  • 1关注
  • 28粉丝

已卖:524份资源

副教授

52%

还不是VIP/贵宾

-

威望
0
论坛币
9009 个
通用积分
0.6000
学术水平
32 点
热心指数
58 点
信用等级
25 点
经验
34409 点
帖子
531
精华
1
在线时间
634 小时
注册时间
2010-11-14
最后登录
2023-7-18

楼主
xiangweinn 发表于 2012-2-26 19:31:32 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有一个矩阵,需要将其中的多个列 元素转换成 factor, 有什么简单的方法 ?谢谢

二维码

扫码加我 拉你入群

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

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

关键词:factor Facto fact CTO ACT 矩阵 factor

回帖推荐

qoiqpwqr 发表于4楼  查看完整内容

> colApply str(colApply(dat, 'x1')) # x1 is a factor now 'data.frame': 20 obs. of 3 variables: $ x1: Factor w/ 7 levels "0","1","2","3",..: 4 7 3 2 4 7 2 3 5 1 ... $ x2: int 1 2 3 4 5 6 7 8 9 10 ... $ x3: chr "d" "d" "b" "b" ... > str(colApply(dat, 2, cumsum)) 'data.frame': 20 obs. of 3 variables: $ x1: num 3 8 2 1 3 8 1 2 4 0 ... $ x2: int 1 3 6 10 15 21 28 36 45 55 ... ...

沙发
吉林小王子 在职认证  发表于 2012-2-26 19:52:52
as.factor()

藤椅
xiangweinn 发表于 2012-2-27 22:03:40
总不能一次一次来吧,有多个列??????????

板凳
qoiqpwqr 发表于 2012-2-28 00:53:17
> colApply <- function(dat, cols = colnames(dat), func = as.factor) {
     dat[cols] <- lapply(dat[cols], func)
     return(dat)
}
> dat <- data.frame(x1 = rpois(20, 3), x2 = 1:20, x3 = sample(letters[1:4], 20, replace = T), stringsAsFactors = F)
> dat
   x1 x2 x3
1   3  1  d
2   8  2  d
3   2  3  b
4   1  4  b
5   3  5  c
6   8  6  a
7   1  7  a
8   2  8  a
9   4  9  c
10  0 10  a
11  1 11  d
12  4 12  c
13  1 13  b
14  6 14  c
15  3 15  b
16  3 16  c
17  4 17  d
18  4 18  c
19  6 19  b
20  1 20  d
> str(colApply(dat, 'x1')) # x1 is a factor now
'data.frame':   20 obs. of  3 variables:
$ x1: Factor w/ 7 levels "0","1","2","3",..: 4 7 3 2 4 7 2 3 5 1 ...
$ x2: int  1 2 3 4 5 6 7 8 9 10 ...
$ x3: chr  "d" "d" "b" "b" ...
> str(colApply(dat, 2, cumsum))
'data.frame':   20 obs. of  3 variables:
$ x1: num  3 8 2 1 3 8 1 2 4 0 ...
$ x2: int  1 3 6 10 15 21 28 36 45 55 ...
$ x3: chr  "d" "d" "b" "b" ...
> str(colApply(dat, c(1, 3), as.factor)) # x1 and x3 are factors while x2 is still integers
'data.frame':   20 obs. of  3 variables:
$ x1: Factor w/ 7 levels "0","1","2","3",..: 4 7 3 2 4 7 2 3 5 1 ...
$ x2: int  1 2 3 4 5 6 7 8 9 10 ...
$ x3: Factor w/ 4 levels "a","b","c","d": 4 4 2 2 3 1 1 1 3 1 ...
>
已有 4 人评分学术水平 热心指数 信用等级 收起 理由
襄2012 + 1 观点有启发
famousid + 1 + 1 + 1 精彩帖子
吉林小王子 + 1 + 1 热心帮助其他会员
aspenroad + 1 + 1 + 1 精彩帖子

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

报纸
吉林小王子 在职认证  发表于 2012-2-28 07:02:39
学习了,

地板
xiangweinn 发表于 2012-3-1 16:53:06
人才啊,难得

7
janekai 发表于 2012-3-3 14:31:54
厉害

8
famousid 发表于 2012-3-3 17:22:51
学习了

9
kk22boy 发表于 2012-3-3 23:04:57
版主厉害
如果该贴对您有些许帮助,希望你能回复一下或者评一下热心指数!谢谢!

10
田伯光嘎嘎 发表于 2020-3-10 10:02:02
如果我有100列,这个方法也行不通。有大神说说吗。例如把100列其中的几列转化为factor

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-6 07:26