You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中使用panelvar包运行Panel VAR时遭遇列不存在错误

R中运行Panel VAR时的列不存在错误

问题背景

使用瑞典统计局提供的市政收入分配面板数据,在R中调用pvarfeols函数运行Panel VAR模型,执行代码如下:

df<- read_excel("Inkfördelning per kommun.xlsx")
nujavlar <- pvarfeols(dependent_vars = c("Kvintil-1", "Kvintil-4", "Kvintil-5"),
lags = 1,
transformation = "demean",
data = df,
panel_identifier = c("Kommun", "Year")
)

出现的错误

错误1

Error: Can't subset columns that don't exist.
x Column `Kvintil-1` doesn't exist.

错误2

Warning in xtfrm.data.frame(x) : cannot xtfrm data frames
Error: Can't subset columns that don't exist.
x Location 2 doesn't exist.
ℹ There are only 1 column.

已尝试的解决措施

  • 确认所有变量为数值型
  • 清理工作区并重启R程序
  • 使用palm包将数据转换为面板数据框
  • 将实体变量Kommun(市政)转换为因子类型

排查与解决方案建议

  1. 检查数据读入结果
    先确认数据是否正确读入,查看列名和数据结构:

    # 打印所有列名
    colnames(df)
    # 查看数据结构
    str(df)
    

    如果输出显示列名与代码中指定的Kvintil-1等不符,说明读入时列名因Excel表头格式、合并单元格等问题被修改,需匹配实际列名调整代码。

  2. 修正Excel读入参数
    若Excel文件的表头位于第二行(第一行是注释或标题),需指定skip参数跳过无关行:

    df <- read_excel("Inkfördelning per kommun.xlsx", skip = 1)
    

    同时确认读入的是正确工作表,可先列出所有工作表:

    readxl::excel_sheets("Inkfördelning per kommun.xlsx")
    # 指定工作表读入
    df <- read_excel("Inkfördelning per kommun.xlsx", sheet = "实际工作表名")
    
  3. 验证目标列是否存在
    使用模糊匹配查看数据中是否包含目标列:

    library(dplyr)
    df %>% select(contains("Kvintil"))
    

    若实际列名是Kvintil 1(空格替代横杠)或带有特殊字符,需修改dependent_vars中的列名以匹配实际数据。

  4. 检查面板标识符列
    确认Kommun和Year列存在且格式正确:

    df %>% select(Kommun, Year)
    

    若Year列是字符型,需转换为数值型:

    df$Year <- as.numeric(df$Year)
    

内容的提问来源于stack exchange,提问作者Jack Söderberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:41:06