Неопределенные столбцы выбраны, как решить? - PullRequest
0 голосов
/ 14 сентября 2018

Когда я пытаюсь запустить следующий код, я получаю сообщение об ошибке:

value <- as.matrix(wsu.wide[, c(4, 3, 2)])

Ошибка в [.data.frame (wsu.wide,, c (4, 3, 2)): неопределенные столбцы выбран

Как мне получить эту работу? Это часть передачи моих данных.

Это полный код:

library(readxl)
library(reshape2)

Store_and_Regional_Sales_Database <- read_excel("~/Downloads/Data_Files/Store and Regional Sales Database.xlsx", skip = 2)
store <- Store_and_Regional_Sales_Database
freq <- table(store$`Sales Region`)
freq
rel.freq <- freq / nrow(store)
rel.freq
rel.freq.scaled <- rel.freq * 100
rel.freq.scaled
labs <- paste(names(rel.freq.scaled), "\n", "(", rel.freq.scaled, "%", ")", sep = "")
pie(rel.freq.scaled, labels = labs, main = "Pie Chart of Sales Region")

monitor <- store[which(store$`Item Description` == '24" Monitor'),]
wsu <- as.data.frame(monitor[c("Week Ending", "Store No.", "Units Sold")])

wsu.wide <- dcast(wsu, "Store No." ~ "Week Ending", value.var = "Units Sold")
value <- as.matrix(wsu.wide[, c(4, 3, 2)])

Спасибо.

Edit:

Это моя таблица под названием "монитор":

24

Когда я делаю это wsu <- as.data.frame(monitor[c("Week Ending", "Store No.", "Units Sold")]), я создаю другой вектор только с переменными «Конец недели», «Номер магазина» и "Проданные единицы".

Однако, когда я пишу код wsu.wide, я получаю только вывод:

wsu.wide

Почему я получаю эту маленькую таблицу, только когда запрашиваю dcast моих данных?

После этого я не понимаю, что не так.

1 Ответ

0 голосов
/ 25 сентября 2018

Проблема в строке: wsu.wide <- dcast(wsu, "Store No." ~ "Week Ending", value.var="Units Sold") Вместо двойной кавычки " следует использовать серьезный акцент - `в формуле:

wsu.wide <- dcast(wsu, `Store No.` ~ `Week Ending`, value.var = "Units Sold")

Чтобы избежать такого рода проблем, лучше не использовать пробелы в именах объектов R, лучше заменить Sales Region имя переменной на sales_region, используя подчеркивание. Смотрите, например Руководство по стилю Google R .

Пожалуйста, смотрите код ниже, я использовал симуляцию ваших данных, так как извлечь их из картинки довольно громоздко:

library(readxl)
library(reshape2)

#simulation
n <- 4
Store_and_Regional_Sales_Database <- data.frame(
  a = seq_along(LETTERS[1:n]),
  sr = LETTERS[1:n],
  sr2 = '24" Monitor',
  sr3 = 1:4,
  sr4 = 2:5,
  sr5 = 3:6)

names(Store_and_Regional_Sales_Database)[2:6] <- c(
  "Sales Region", "Item Description",
  "Week Ending", "Store No.", "Units Sold")

# algorithm
store <- Store_and_Regional_Sales_Database
freq <- table(store$`Sales Region`)
freq
rel.freq <- freq/nrow(store)
rel.freq
rel.freq.scaled <- rel.freq * 100
rel.freq.scaled
labs <- paste(names(rel.freq.scaled), "\n", "(", rel.freq.scaled, "%", ")", sep = "")
pie(rel.freq.scaled, labels = labs, main = "Pie Chart of Sales Region")

monitor <- store[which(store$`Item Description` == '24" Monitor'),]
wsu <- as.data.frame(monitor[c("Week Ending", "Store No.", "Units Sold")])

wsu.wide <- dcast(wsu, `Store No.` ~ `Week Ending`, value.var = "Units Sold")
value <- as.matrix(wsu.wide[ ,c(4,3,2)])

Выход:

      3  2  1
[1,] NA NA  3
[2,] NA  4 NA
[3,]  5 NA NA
[4,] NA NA NA
...