创建一个函数来更改R中变量的格式
我想创建一个robuust函数,以创建R中我的创建一个函数来更改R中变量的格式,r,function,data.table,factors,R,Function,Data.table,Factors,我想创建一个robuust函数,以创建R中我的data.table中某些列的格式。我希望它尽可能健壮,因为我将在不同的数据集上使用它,这些数据集呈现不同的数据不一致性。数据示例如下: 此函数的目标是检查数据表中的两列:组和类别。他们本来就是性格。我想对它们进行变异,以便: 组变量应该是一个因子,并且只由级别a、B和U组成。其他一切都应该是U 类似地,变量类别应该是一个因子,并且只包括E、CH和S。任何空单元格或NA应为E。其他一切NA 我的原始数据由数万行组成,因此我正在寻找适合大数据的解决方案
data.table
中某些列的格式。我希望它尽可能健壮,因为我将在不同的数据集上使用它,这些数据集呈现不同的数据不一致性。数据示例如下:
此函数的目标是检查数据表中的两列
:组
和类别
。他们本来就是性格。我想对它们进行变异,以便:
组变量应该是一个因子,并且只由级别a
、B
和U
组成。其他一切都应该是U
类似地,变量类别
应该是一个因子,并且只包括E
、CH
和S
。任何空单元格或NA
应为E
。其他一切NA
我的原始数据由数万行组成,因此我正在寻找适合大数据的解决方案,理想情况下是data.table
rm(iris)
iris
group <-rep(c("a", "b", "C", "x", "A", "b", " ", "b", NA , "c"), times = 15) # A,B,U
category <-rep(c("e", "E", "CH", "Ch", "ch", "S", " ", "b", NA , "c"), times = 15) # E, CH, S
iris <- cbind(iris, group, category)
iris <- iris[1:25,]
setDT(iris)
levels(iris$group) = list( U = "", F = "F", M = "M", U = "U")
levels(iris$category) = list( E = "", CH = "CH", E = "E", S = "S")
原始数据:
> iris
Sepal.Length Sepal.Width Petal.Length Petal.Width Species group category
1 5.1 3.5 1.4 0.2 setosa a e
2 4.9 3.0 1.4 0.2 setosa b E
3 4.7 3.2 1.3 0.2 setosa C CH
4 4.6 3.1 1.5 0.2 setosa x Ch
5 5.0 3.6 1.4 0.2 setosa A ch
6 5.4 3.9 1.7 0.4 setosa b S
7 4.6 3.4 1.4 0.3 setosa
8 5.0 3.4 1.5 0.2 setosa b b
9 4.4 2.9 1.4 0.2 setosa <NA> <NA>
10 4.9 3.1 1.5 0.1 setosa c c
11 5.4 3.7 1.5 0.2 setosa a e
12 4.8 3.4 1.6 0.2 setosa b E
13 4.8 3.0 1.4 0.1 setosa C CH
14 4.3 3.0 1.1 0.1 setosa x Ch
15 5.8 4.0 1.2 0.2 setosa A ch
16 5.7 4.4 1.5 0.4 setosa b S
17 5.4 3.9 1.3 0.4 setosa
18 5.1 3.5 1.4 0.3 setosa b b
19 5.7 3.8 1.7 0.3 setosa <NA> <NA>
20 5.1 3.8 1.5 0.3 setosa c c
21 5.4 3.4 1.7 0.2 setosa a e
22 5.1 3.7 1.5 0.4 setosa b E
23 4.6 3.6 1.0 0.2 setosa C CH
24 5.1 3.3 1.7 0.5 setosa x Ch
25 4.8 3.4 1.9 0.2 setosa A ch
虹膜
萼片。长萼片。宽花瓣。长花瓣。宽种群分类
1 5.1 3.5 1.4 0.2刚毛a e
2 4.9 3.0 1.4 0.2刚毛
3 4.7 3.2 1.3 0.2刚毛
4.6 3.1 1.5 0.2刚毛x Ch
5.0 3.6 1.4 0.2刚毛
6 5.4 3.9 1.7 0.4刚毛
7.4.6 3.4 1.4 0.3刚毛
8.5.0 3.4 1.5 0.2刚毛b
9.4.2.9 1.4 0.2刚毛
10 4.9 3.1 1.5 0.1刚毛c
11 5.4 3.7 1.5 0.2刚毛a e
12 4.8 3.4 1.6 0.2刚毛
13 4.8 3.0 1.4 0.1刚毛
14 4.3 3.0 1.1 0.1刚毛x Ch
15 5.8 4.0 1.2 0.2刚毛
16 5.7 4.4 1.5 0.4刚毛b S
17 5.4 3.9 1.3 0.4刚毛
18 5.1 3.5 1.4 0.3刚毛b
19 5.7 3.8 1.7 0.3刚毛
20 5.1 3.8 1.5 0.3刚毛c
21 5.4 3.4 1.7 0.2刚毛a e
22 5.1 3.7 1.5 0.4刚毛
23 4.6 3.6 1.0 0.2刚毛
24.5.1 3.3 1.7 0.5刚毛x Ch
25 4.8 3.4 1.9 0.2刚毛
期望输出:
> iris
Sepal.Length Sepal.Width Petal.Length Petal.Width Species group category
1 5.1 3.5 1.4 0.2 setosa A E
2 4.9 3.0 1.4 0.2 setosa B E
3 4.7 3.2 1.3 0.2 setosa C CH
4 4.6 3.1 1.5 0.2 setosa U CH
5 5.0 3.6 1.4 0.2 setosa A CH
6 5.4 3.9 1.7 0.4 setosa B S
7 4.6 3.4 1.4 0.3 setosa U E
8 5.0 3.4 1.5 0.2 setosa B <NA>
9 4.4 2.9 1.4 0.2 setosa U E
10 4.9 3.1 1.5 0.1 setosa U <NA>
11 5.4 3.7 1.5 0.2 setosa A E
12 4.8 3.4 1.6 0.2 setosa B E
13 4.8 3.0 1.4 0.1 setosa C CH
14 4.3 3.0 1.1 0.1 setosa U CH
15 5.8 4.0 1.2 0.2 setosa A CH
16 5.7 4.4 1.5 0.4 setosa B S
17 5.4 3.9 1.3 0.4 setosa U E
18 5.1 3.5 1.4 0.3 setosa B <NA>
19 5.7 3.8 1.7 0.3 setosa U E
20 5.1 3.8 1.5 0.3 setosa U <NA>
21 5.4 3.4 1.7 0.2 setosa A E
22 5.1 3.7 1.5 0.4 setosa B E
23 4.6 3.6 1.0 0.2 setosa C CH
24 5.1 3.3 1.7 0.5 setosa U CH
25 4.8 3.4 1.9 0.2 setosa A CH
虹膜
萼片。长萼片。宽花瓣。长花瓣。宽种群分类
1 5.1 3.5 1.4 0.2刚毛A E
2 4.9 3.0 1.4 0.2刚毛
3 4.7 3.2 1.3 0.2刚毛
4.6 3.1 1.5 0.2 setosa U CH
5.0 3.6 1.4 0.2刚毛
6 5.4 3.9 1.7 0.4刚毛
7 4.6 3.4 1.4 0.3 setosa U E
8.5.0 3.4 1.5 0.2 setosa B
9 4.4 2.9 1.4 0.2 setosa U E
10 4.9 3.1 1.5 0.1 setosa U
11 5.4 3.7 1.5 0.2刚毛A E
12 4.8 3.4 1.6 0.2刚毛
13 4.8 3.0 1.4 0.1刚毛
14 4.3 3.0 1.1 0.1 setosa U CH
15 5.8 4.0 1.2 0.2刚毛
16 5.7 4.4 1.5 0.4刚毛B S
17 5.4 3.9 1.3 0.4塞托萨大学
18 5.1 3.5 1.4 0.3刚毛B
19 5.7 3.8 1.7 0.3 setosa U E
20 5.1 3.8 1.5 0.3 setosa U
21 5.4 3.4 1.7 0.2刚毛A E
22 5.1 3.7 1.5 0.4刚毛
23 4.6 3.6 1.0 0.2刚毛
24 5.1 3.3 1.7 0.5 setosa U CH
25 4.8 3.4 1.9 0.2刚毛
要进行条件替换,应使用第一个维度。使用
data.table
操作:=
(通过引用更新),您不需要重新分配值。我假设您要放入的NAs属于组
和类别
。我不认为使用因子
变量有助于再现示例。但是,如果实际数据显示因子,则可以在重新编码步骤之前将其转换为字符
虹膜
组要进行条件替换,应使用第一个维度。使用
data.table
操作:=
(通过引用更新),您不需要重新分配值。我假设您要放入的NAs属于组
和类别
。我不认为使用因子
变量有助于再现示例。然而,我
> iris
Sepal.Length Sepal.Width Petal.Length Petal.Width Species group category
1 5.1 3.5 1.4 0.2 setosa A E
2 4.9 3.0 1.4 0.2 setosa B E
3 4.7 3.2 1.3 0.2 setosa C CH
4 4.6 3.1 1.5 0.2 setosa U CH
5 5.0 3.6 1.4 0.2 setosa A CH
6 5.4 3.9 1.7 0.4 setosa B S
7 4.6 3.4 1.4 0.3 setosa U E
8 5.0 3.4 1.5 0.2 setosa B <NA>
9 4.4 2.9 1.4 0.2 setosa U E
10 4.9 3.1 1.5 0.1 setosa U <NA>
11 5.4 3.7 1.5 0.2 setosa A E
12 4.8 3.4 1.6 0.2 setosa B E
13 4.8 3.0 1.4 0.1 setosa C CH
14 4.3 3.0 1.1 0.1 setosa U CH
15 5.8 4.0 1.2 0.2 setosa A CH
16 5.7 4.4 1.5 0.4 setosa B S
17 5.4 3.9 1.3 0.4 setosa U E
18 5.1 3.5 1.4 0.3 setosa B <NA>
19 5.7 3.8 1.7 0.3 setosa U E
20 5.1 3.8 1.5 0.3 setosa U <NA>
21 5.4 3.4 1.7 0.2 setosa A E
22 5.1 3.7 1.5 0.4 setosa B E
23 4.6 3.6 1.0 0.2 setosa C CH
24 5.1 3.3 1.7 0.5 setosa U CH
25 4.8 3.4 1.9 0.2 setosa A CH