【问题标题】:error with dfidx: the two indexes don't define unique observationsdfidx 错误:这两个索引没有定义唯一的观察值
【发布时间】:2022-01-18 16:48:56
【问题描述】:

我从一项调查中收集了数据,以便执行基于选择的联合分析。 我已经用 python 预处理和清理数据,以便在 R 中使用它们。 但是,当我在数据集上应用函数 dfidx 时,出现以下错误:这两个索引没有定义唯一的观察值。 我真的不明白为什么。在创建 .csv 文件之前,我通过 pandas 函数final_df.duplicated().sum() 检查是否存在重复,其输出为 0 表示没有重复。 请有人帮我理解我做错了什么?

代码如下:

df <- read.csv('.../survey_results.csv')
df <-  df[,-c(1)]
df$Platform <- as.factor(df$Platform)
df$Deposit <-  as.factor(df$Deposit)
df$Fees <-  as.factor(df$Fees)
df$Financial_Instrument <-  as.factor(df$Financial_Instrument)
df$Leverage <-  as.factor(df$Leverage)
df$Social_Trading <-  as.factor(df$Social_Trading)
df.mlogit <- dfidx(df, idx = list(c("resp.id","ques"), "position"), shape='long')

这是我正在使用的数据集的链接https://github.com/AlbertoDeBenedittis/conjoint-survey-shiny/blob/main/survey_results.csv

提前感谢您的宝贵时间

【问题讨论】:

    标签: r dataframe mlogit


    【解决方案1】:

    函数dfidx() 是为“观察由两个(可能嵌套的)索引定义的数据帧”(ref)构建的。

    我不认为这个函数是为两个以上的idxs 构建的。特别是,在您的 df 中,只有在考虑您上面提到的三列(resp.idquesposition)的组合时,才没有任何重复。

    解决此问题的一种方法是将resp.idques 两列与paste(...)“组合”为一个(例如称为resp.id.ques)。

    df$resp.id.ques <- paste(df$resp.id, df$ques, sep="_")
    

    然后您可以编写以下应该可以正常工作的行:

    df.mlogit <- dfidx(df, idx = list("resp.id.ques", "position"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-22
      • 2020-10-27
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-20
      • 2019-11-08
      • 1970-01-01
      相关资源
      最近更新 更多