斯塔塔对Pandas:即使有重复的价值标签?

2024-09-30 16:33:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图打开一个.dta作为数据帧。 但出现了一个错误:“ValueError:Value labels for column。。。不是唯一的。重复的标签是:“后跟标签,在一列中出现两次。在

我知道在stata中用完全相同的值标签来标记多段代码并不明智(不是我的错:) 经过一些研究,我知道,熊猫不会接受重复的价值标签(这很聪明)。在

但我想不出一个(好的)解决方案: 是否有:

a.在这个过程中,用pandas打开数据并将双精度(如“label”重命名为“label(2)”)是一种平滑的方式?在

数据如下(括号中的值标签):

  | multilabel    
1 | 11 (oneone or twotwo)
2 | 22 (oneone or twotwo)
3 | 33 (other-label-which-is-unique)

目前我的代码:

^{pr2}$

或者

b.一种告诉stata的简单快捷的方法:只需将所有重复的值标签重命名为“label(2)”,而不是“label”? 是的,到目前为止的代码也相当无聊:

use "file.dta"

*followed by a loop wich finds repeated labels and changes them

save "file.dta", replace

是的,有很多重复的价值标签要一个接一个地经历。在

这里的Stata命令生成了一个最小的示例:

set obs 1
generate var1 = 1 in 1
set obs 2
replace var1 = 2 in 2
set obs 3
replace var1 = 3 in 3
generate var2 = 11 in 1
replace var2 = 22 in 2
replace var2 = 33 in 3
rename var2 multilabel
label define labelrepeat 11 "oneone or twotwo" 22 "oneone or twotwo"
label values multilabel labelrepeat

我为每一个建议感到高兴!在


Tags: or数据代码in标签labelreplaceset
2条回答

如果变量有重复的标签,那么

decode multilabel, gen(valuelabel)
label values multilabel

将值标签放入字符串变量中,然后撤消multilabel值与先前附加的值标签的关联。我不知道你还需要做什么,也不知道你为什么还要做其他事情。你现在有了和以前一样的信息。我不知道熊猫是否会忽视价值标签的定义。在

为了完整起见,这里有一种方法可以找出哪些变量的值标签与数值不一一对应。在

^{pr2}$

我的最终解决方案(在斯塔塔):

clear

use "file.dta"

*Find out which duplicated value labels there are
labelbook, length(12)

return list, all

*r(nuniq) contains the not-unique-values

*on all variables in r(nuniq) use the numlabels command

numlabel `r(nuniq)', add

*Look at the not unique value labels again:
labelbook, length(12)

return list, all

save "file2.dta", replace

谢谢你尼克!在

相关问题 更多 >