文章目录
当R读入数据框时,会先自动定义数据类型
根据需求对数据框中的某几列转换字符类型
有哪些数据类型
查看字符类型
c
> class(data)
[1] "data.frame"
> class(data$HD)
[1] "character"
查看数据框中所有列:
c
> str(data)
'data.frame': 127 obs. of 10 variables:
$ HD: chr "H" "H" "H" "H" ...
$ pH: num 6.07 5.99 6.56 6.04 6.75 ...
$ Ec: num 124 115 156 206 328 ...
$ AK: num 237 210 257 296 409 ...
$ AP: chr "35.8" "18.8" "19.6" "38" ...
$ TP: num 0.813 0.775 0.752 0.881 0.926 0.924 0.682 0.728 0.717 0.749 ...
$ TN: num 1.58 1.6 1.57 1.63 1.7 ...
$ AN: num 138 140 136 142 137 ...
$ OC: num 17.5 18.3 17.3 18.3 17.2 ...
$ OM: num 30.2 31.6 29.8 31.6 29.7 ...
字符串转换
单个字符串转换
c
data$HD <- as.factor(data$HD)
多列字符串转换
使用 lapply 函数
可以使用 lapply 对除第一列外的所有列进行转换
c
# 将除第一列以外的列转换为数值型
df[, -1] <- lapply(df[, -1], as.numeric)
str(df) # 检查结果
使用 dplyr 包的 mutate_at 或 mutate(across(...))
dplyr
提供了简单的方法来指定要转换的列
使用 dplyr
包的 mutate_all
函数可以将整个数据框的列都转换为数值型,而 mutate_at
可以指定要转换的列。
c
# 使用 mutate_all 将所有列转换为数值型:
df <- df %>% mutate_all(as.numeric)
# 使用 mutate_at 转换指定列:
df <- df %>% mutate_at(vars(col1, col3), as.numeric)
c
# 使用 mutate_at 转换除第一列外的列
df <- df %>% mutate_at(vars(-col1), as.numeric)
# 使用 across (dplyr 1.0+ 版本)
df <- df %>% mutate(across(-col1, as.numeric))
str(df) # 检查结果
使用 apply 函数
也可以使用 apply 将数据框的子集(即多列)转换为数值型。
c
# 使用 apply 将除第一列以外的列转换为数值型
df[, -1] <- apply(df[, -1], 2, function(x) as.numeric(as.character(x)))
str(df) # 检查结果
如果想转换多列,可以使用 apply 将数据框的子集(即多列)转换为数值型。
c
df[c("col1", "col3")] <- apply(df[c("col1", "col3")], 2, as.numeric)