创建一个函数来更改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 我的原始数据由数万行组成,因此我正在寻找适合大数据的解决方案

我想创建一个robuust函数,以创建R中我的
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