【问题标题】:Undefined columns selected, how to solve?选择了未定义的列,如何解决?
【发布时间】:2018-09-14 10:28:37
【问题描述】:

当我尝试运行以下代码时出现错误:

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)])

谢谢。

编辑:

这是我的名为“监视器”的表:

当我创建这个wsu &lt;- as.data.frame(monitor[c("Week Ending", "Store No.", "Units Sold")]) 时,我创建了另一个向量,其中只有变量“Week Ending”、“Store No.”。和“销售单位”。

但是,当我编写 wsu.wide 代码时,我得到的输出只是:

当我请求dcast 我的数据时,为什么我只得到这个小表?

在此之后,我不明白出了什么问题。

【问题讨论】:

  • 你好,Aleksa。欢迎来到 Stackoverflow。请阅读How to Create a Minimal, Complete, and Verifiable Example 并更新您的帖子。
  • 该错误清楚地表明您正在选择未定义的列,即这些列不存在。再次检查您的语法。
  • 很难说,但看起来这一行缺少逗号 wsu
  • @aleksa,最好不要在你的帖子中放图片,因为这是不鼓励的。但是把dput(head(monitor, 17))函数的结果放上去。

标签: r reshape2 dcast


【解决方案1】:

问题在于: wsu.wide &lt;- 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's R Style Guide.

请看下面的代码,我是用你的数据模拟的,从图片中提取比较麻烦:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 2019-12-30
    • 2017-12-09
    • 2020-07-29
    • 2019-07-21
    • 2016-10-29
    • 2016-12-07
    相关资源
    最近更新 更多