Я работаю над созданием некоторых правил связывания для моего набора данных CatalogSales.csv.
Я использовал тот же код в другом наборе данных без проблем, и единственное, что я могу найти, что отличается от этого набора данных, это то, что R распознает значения 0 как NA. Я могу найти множество учебных пособий о том, как превратить значение NA в 0, но я не знаю, почему эти 0 распознаются как NA и как их лучше исправить.
Вот код в полном объеме. Обратите внимание, что я опускаю столбцы с NA в разделе о создании гистограммы.
> cross.sell <- read.csv("CatalogCrossSell.csv")
> head(cross.sell)
Customer.Number Clothing.Division Housewares.Division
1 11569 0 1
2 13714 0 1
3 46391 0 1
4 67264 0 0
5 67363 0 0
6 72553 0 1
Health.Products.Division Automotive.Division Personal.Electronics.Division
1 1 1 1
2 1 1 1
3 1 1 1
4 1 1 1
5 1 0 1
6 1 1 1
Computers.Division Garden.Division Novelty.Gift.Division Jewelry.Division X
1 0 0 1 0 NA
2 0 1 1 1 NA
3 0 1 1 1 NA
4 0 1 1 0 NA
5 0 1 1 0 NA
6 0 1 1 1 NA
X.1 X.2 X.3 X.4 X.5 X.6 X.7 X.8 X.9
1 NA NA NA NA NA NA NA NA NA
2 NA NA NA NA NA NA NA NA NA
3 NA NA NA NA NA NA NA NA NA
4 NA NA NA NA NA NA NA NA NA
5 NA NA NA NA NA NA NA NA NA
6 NA NA NA NA NA NA NA NA NA
> dim(cross.sell)
[1] 60004 20
> nrow(cross.sell)
[1] 60004
> is.data.frame(cross.sell)
[1] TRUE
> table(is.na(cross.sell))
FALSE TRUE
49980 1150100
>
>
> #View individual item names
> t(t(names(cross.sell)))
[,1]
[1,] "Customer.Number"
[2,] "Clothing.Division"
[3,] "Housewares.Division"
[4,] "Health.Products.Division"
[5,] "Automotive.Division"
[6,] "Personal.Electronics.Division"
[7,] "Computers.Division"
[8,] "Garden.Division"
[9,] "Novelty.Gift.Division"
[10,] "Jewelry.Division"
[11,] "X"
[12,] "X.1"
[13,] "X.2"
[14,] "X.3"
[15,] "X.4"
[16,] "X.5"
[17,] "X.6"
[18,] "X.7"
[19,] "X.8"
[20,] "X.9"
>
> #Create bar plot to view distribution of sales and remove NA values
> cross.data <- as.matrix(subset(cross.sell[,-c(1, 11:20)]))
> barplot(cross.data, main = "Individual Item Sales")
> dim(cross.data)
[1] 60004 9
>
> #Check for NA values and class
> table(is.na(cross.data))
FALSE TRUE
44982 495054
> sapply(cross.data, class)
[1] "integer" "integer" "integer" "integer" "integer" "integer" "integer"
[8] "integer" "integer" "integer" "integer" "integer" "integer" "integer"
[ reached getOption("max.print") -- omitted 539036 entries ]
>
> #Create transaction database
> cross.trans <- as(cross.data, "transactions")
Error in if (any(from != 0 & from != 1)) warning("matrix contains values other than 0 and 1! Setting all entries != 0 to 1.") :
missing value where TRUE/FALSE needed
Будем благодарны за любые рекомендации. Поскольку я уже опустил столбцы 11:20, у меня не должно быть никаких значений NA, но я, очевидно, даю, и когда я go супер старая школа и складываю количество значений NA = False и NA = True, я получаю одно и то же число значений в качестве общей суммы в моей базе данных, так что я знаю, что это потому, что R читает 0 как NA, но я не знаю почему .
Вот первые несколько запрашиваемых строк:
> readLines("CatalogCrossSell.csv", n=4)
[1] "Customer Number,Clothing Division,Housewares Division,Health Products Division,Automotive Division,Personal Electronics Division,Computers Division,Garden Division,Novelty Gift Division,Jewelry Division,,,,,,,,,,"
[2] "000011569,0,1,1,1,1,0,0,1,0,,,,,,,,,,"
[3] "000013714,0,1,1,1,1,0,1,1,1,,,,,,,,,,"
[4] "000046391,0,1,1,1,1,0,1,1,1,,,,,,,,,,"
Я уже пытался удалить остальные 10 столбцов, когда создавал подмножество cross.data (в разделе boxplot), но я все еще получал ошибку. Эта часть кода приведена ниже для ясности:
> cross.data <- as.matrix(subset(cross.sell[,-c(1, 11:20)]))
> head(cross.data)
Clothing.Division Housewares.Division Health.Products.Division
1 0 1 1
2 0 1 1
3 0 1 1
4 0 0 1
5 0 0 1
6 0 1 1
Automotive.Division Personal.Electronics.Division Computers.Division
1 1 1 0
2 1 1 0
3 1 1 0
4 1 1 0
5 0 1 0
6 1 1 0
Garden.Division Novelty.Gift.Division Jewelry.Division
1 0 1 0
2 1 1 1
3 1 1 1
4 1 1 0
5 1 1 0
6 1 1 1
Спасибо за вашу помощь - извините за поздний ответ, у меня сейчас много на тарелке, и я впервые У меня была возможность что-нибудь проверить.