根据 R 中此列中的值自动为数据框中的列查找最佳 Class
Automatically Find Best Class for Column in Data Frame Based on Values in this Column in R
我有一个数据框,其中所有列都有字符 class。我想自动将每列的 classes 转换为最适合数据的 class。
考虑以下示例数据:
data <- data.frame(x1 = letters[1:5],
x2 = as.character(1:5),
x3 = as.character(seq(0.2, 1, 0.2)))
data
x1 x2 x3
1 a 1 0.2
2 b 2 0.4
3 c 3 0.6
4 d 4 0.8
5 e 5 1
示例数据中的所有列都具有字符 class:
sapply(data, class)
# x1 x2 x3
# "character" "character" "character"
我可以手动将每一列转换为所需的 class。但是,对于大型数据集,这可能效率不高。
有没有办法自动扫描每一列中的值并将相应的列转换为更好的class?
在此示例中,x2 列包含整数,x3 列包含数值。因此,所需的 classes 将如下所示:
sapply(data, class)
# x1 x2 x3
# "character" "integer" "numeric"
使用 type.convert()
,as.is=TRUE
防止将字符强制转换为因子。
data <- data |> type.convert(as.is=TRUE)
str(data)
# 'data.frame': 5 obs. of 3 variables:
# $ x1: chr "a" "b" "c" "d" ...
# $ x2: int 1 2 3 4 5
# $ x3: num 0.2 0.4 0.6 0.8 1
R < 4.1:
data <- type.convert(data, as.is=TRUE)
我有一个数据框,其中所有列都有字符 class。我想自动将每列的 classes 转换为最适合数据的 class。
考虑以下示例数据:
data <- data.frame(x1 = letters[1:5],
x2 = as.character(1:5),
x3 = as.character(seq(0.2, 1, 0.2)))
data
x1 x2 x3
1 a 1 0.2
2 b 2 0.4
3 c 3 0.6
4 d 4 0.8
5 e 5 1
示例数据中的所有列都具有字符 class:
sapply(data, class)
# x1 x2 x3
# "character" "character" "character"
我可以手动将每一列转换为所需的 class。但是,对于大型数据集,这可能效率不高。
有没有办法自动扫描每一列中的值并将相应的列转换为更好的class?
在此示例中,x2 列包含整数,x3 列包含数值。因此,所需的 classes 将如下所示:
sapply(data, class)
# x1 x2 x3
# "character" "integer" "numeric"
使用 type.convert()
,as.is=TRUE
防止将字符强制转换为因子。
data <- data |> type.convert(as.is=TRUE)
str(data)
# 'data.frame': 5 obs. of 3 variables:
# $ x1: chr "a" "b" "c" "d" ...
# $ x2: int 1 2 3 4 5
# $ x3: num 0.2 0.4 0.6 0.8 1
R < 4.1:
data <- type.convert(data, as.is=TRUE)