dfidx 错误:两个索引未定义唯一观察值
error with dfidx: the two indexes don't define unique observations
我从一项调查中收集了数据,以便执行基于选择的联合分析。
我已经使用 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')
这是我正在使用的数据集的 link https://github.com/AlbertoDeBenedittis/conjoint-survey-shiny/blob/main/survey_results.csv
提前感谢您的宝贵时间
函数 dfidx()
是为数据框构建的,“其观察值由两个(可能嵌套的)索引定义”(ref)。
我不认为这个函数是为超过两个 idx
构建的。特别是,在你的 df 中,只有在考虑你上面提到的三列(resp.id
、ques
和 position
)的组合时才没有任何重复项。
此问题的一个解决方案是将两列 resp.id
和 ques
与 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"))
我从一项调查中收集了数据,以便执行基于选择的联合分析。
我已经使用 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')
这是我正在使用的数据集的 link https://github.com/AlbertoDeBenedittis/conjoint-survey-shiny/blob/main/survey_results.csv
提前感谢您的宝贵时间
函数 dfidx()
是为数据框构建的,“其观察值由两个(可能嵌套的)索引定义”(ref)。
我不认为这个函数是为超过两个 idx
构建的。特别是,在你的 df 中,只有在考虑你上面提到的三列(resp.id
、ques
和 position
)的组合时才没有任何重复项。
此问题的一个解决方案是将两列 resp.id
和 ques
与 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"))