将数据框中的列转换为因子错误

时间:2017-11-30 02:19:28

标签: r dataframe

我想将策略列更改为因子变量,并使用以下内容:

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\mysql-init.txt

但得到了这个错误。

jan17dat[,"Strategy"] <- as.factor(jan17dat[,"Strategy"])

尝试按如下方式对列策略进行排序;

Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?

但是得到了这个错误。

jan17dat<-jan17dat[order(jan17dat$Strategy)]

这是我数据的一部分:

Error: Column indexes must be at most 30 if positive, not 51, 68, 90, 100, 103, 115, 129, 158, 173, 183, 194, 227, 319, 333, 367, 389, 454, 463, 493,

1 个答案:

答案 0 :(得分:2)

两个选项都应该有效,参见示例:

d1 <- mtcars[, 1:3]
str(d1)
# 'data.frame': 32 obs. of  3 variables:
# $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
# $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
# $ disp: num  160 160 108 258 360 ...

d1[, "cyl"] <- as.factor(d1[, "cyl"])
str(d1)
# 'data.frame': 32 obs. of  3 variables:
# $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
# $ cyl : Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ...
# $ disp: num  160 160 108 258 360 ...

d2 <- mtcars[, 1:3]
str(d2)
# 'data.frame': 32 obs. of  3 variables:
# $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
# $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
# $ disp: num  160 160 108 258 360 ...

d2$cyl <- as.factor(d2$cyl)
str(d2)
# 'data.frame': 32 obs. of  3 variables:
# $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
# $ cyl : Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ...
# $ disp: num  160 160 108 258 360 ...

identical(d1, d2)
# [1] TRUE