全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
15930 10
2012-02-26
有一个矩阵,需要将其中的多个列 元素转换成 factor, 有什么简单的方法 ?谢谢

二维码

扫码加我 拉你入群

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

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

全部回复
2012-2-26 19:52:52
as.factor()
二维码

扫码加我 拉你入群

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

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

2012-2-27 22:03:40
总不能一次一次来吧,有多个列??????????
二维码

扫码加我 拉你入群

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

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

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 ...
>
二维码

扫码加我 拉你入群

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

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

2012-2-28 07:02:39
学习了,
二维码

扫码加我 拉你入群

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

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

2012-3-1 16:53:06
人才啊,难得
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群