要将R数据帧的列从整数转换为数字,我们可以使用lapply函数。例如,如果我们有一个包含所有整数列的数据框df,则可以使用代码lapply(df,as.numeric)将所有列的数据类型转换为数字数据类型。
请看以下数据帧-
set.seed(871) x1<−sample(0:1,20,replace=TRUE) x2<−sample(0:5,20,replace=TRUE) x3<−sample(1:5,20,replace=TRUE) x4<−sample(0:9,20,replace=TRUE) x5<−sample(1:10,20,replace=TRUE) df1<−data.frame(x1,x2,x3,x4,x5) df1
输出结果
x1 x2 x3 x4 x5 1 0 2 2 9 9 2 0 2 1 1 10 3 1 1 5 8 10 4 1 3 2 4 3 5 0 0 2 4 3 6 1 5 2 8 3 7 0 4 5 4 5 8 1 1 5 8 1 9 0 1 4 9 7 10 0 4 2 0 9 11 1 1 4 7 6 12 0 2 4 8 5 13 1 5 5 0 1 14 1 0 1 5 4 15 0 0 3 7 5 16 1 0 4 6 4 17 1 5 4 7 8 18 1 1 1 3 2 19 1 2 3 6 3 20 0 0 1 8 1
str(df1)
输出结果
'data.frame': 20 obs. of 5 variables: $ x1: int 0 0 1 1 0 1 0 1 0 0 ... $ x2: int 2 2 1 3 0 5 4 1 1 4 ... $ x3: int 2 1 5 2 2 2 5 5 4 2 ... $ x4: int 9 1 8 4 4 8 4 8 9 0 ... $ x5: int 9 10 10 3 3 3 5 1 7 9 ...
将df1的列转换为数字-
df1<−lapply(df1,as.numeric) str(df1)
输出结果
List of 5 $ x1: num [1:20] 0 0 1 1 0 1 0 1 0 0 ... $ x2: num [1:20] 2 2 1 3 0 5 4 1 1 4 ... $ x3: num [1:20] 2 1 5 2 2 2 5 5 4 2 ... $ x4: num [1:20] 9 1 8 4 4 8 4 8 9 0 ... $ x5: num [1:20] 9 10 10 3 3 3 5 1 7 9 ...
y1<−rpois(20,10) y2<−rpois(20,8) y3<−rpois(20,5) y4<−rpois(20,2) df2<−data.frame(y1,y2,y3,y4) df2
输出结果
y1 y2 y3 y4 1 9 10 4 3 2 6 9 4 0 3 7 9 3 4 4 4 3 6 1 5 9 7 2 4 6 17 4 7 2 7 6 5 7 0 8 3 5 5 4 9 12 6 7 5 10 15 10 4 2 11 6 3 5 2 12 9 10 6 0 13 6 8 6 2 14 11 6 4 2 15 9 7 3 5 16 12 7 3 3 17 18 9 8 4 18 7 5 3 5 19 14 4 7 4 20 17 8 8 3
str(df2)
输出结果
'data.frame': 20 obs. of 4 variables: $ y1: int 9 6 7 4 9 17 6 3 12 15 ... $ y2: int 10 9 9 3 7 4 5 5 6 10 ... $ y3: int 4 4 3 6 2 7 7 5 7 4 ... $ y4: int 3 0 4 1 4 2 0 4 5 2 ...
将df2的列转换为数字-
df2<−lapply(df2,as.numeric) str(df2)
List of 4 $ y1: num [1:20] 9 6 7 4 9 17 6 3 12 15 ... $ y2: num [1:20] 10 9 9 3 7 4 5 5 6 10 ... $ y3: num [1:20] 4 4 3 6 2 7 7 5 7 4 ... $ y4: num [1:20] 3 0 4 1 4 2 0 4 5 2 ...
z1<−sample(21:30,20,replace=TRUE) z2<−sample(1:50,20) z3<−sample(101:200,20) df3<−data.frame(z1,z2,z3) df3
输出结果
z1 z2 z3 1 29 32 130 2 27 26 149 3 22 11 199 4 30 28 161 5 21 36 174 6 29 8 152 7 23 23 142 8 27 22 114 9 24 45 135 10 21 34 171 11 28 40 125 12 24 42 148 13 21 43 106 14 25 1 137 15 26 7 118 16 22 2 184 17 28 4 192 18 24 38 183 19 27 31 168 20 21 3 185
str(df3)
输出结果
'data.frame': 20 obs. of 3 variables: $ z1: int 29 27 22 30 21 29 23 27 24 21 ... $ z2: int 32 26 11 28 36 8 23 22 45 34 ... $ z3: int 130 149 199 161 174 152 142 114 135 171 ...
将df3的列转换为数字-
df3<−lapply(df3,as.numeric) str(df3)
输出结果
List of 3 $ z1: num [1:20] 29 27 22 30 21 29 23 27 24 21 ... $ z2: num [1:20] 32 26 11 28 36 8 23 22 45 34 ... $ z3: num [1:20] 130 149 199 161 174 152 142 114 135 171 ...