我将少数几个从spss,cvs或excel文件下载的数据集合并到一个大数据表中。在大多数情况下,我可以使用我想运行测试的所有变量,但有时需要更改它们的结构。作为示例,这是我的数据集:
> str(gadd.us)
'data.frame': 467 obs. of 381 variables:
$ nidaid : Nmnl. item chr "45-D11150341" "45-D11180321" "45-D11220022" "45-D11240432" ...
$ id : Nmnl. item chr "D11150341" "D11180321" "D11220022" "D11240432" ...
$ agew1 : Itvl. item num 17 17 15 18 17 15 15 18 20 18 ...
$ nagew1 : Itvl. item num 17.3 17.2 15.7 18.2 17.2 ...
$ nsex : Nmnl. item w/ 2 labels for 0,1 num 1 1 0 0 0 0 1 1 1 1 ...
当我只关注一个变量时,我会得到类似的东西
> str(gadd.us$wasiblckw2)
Itvl. item + ms.v. num [1:467] 70 48 40 60 37 46 67 55 45 61 ...
> str(gadd.us$nsex)
Nmnl. item w/ 2 labels for 0,1 num [1:467] 1 1 0 0 0 0 1 1 1 1 ...
所以当我尝试创建直方图时,我得到一个错误...
> hist(gadd.us$wasiblckw2)
Error in hist.default(gadd.us$wasiblckw2) :
some 'x' not counted; maybe 'breaks' do not span range of 'x'
如果我使用as.numeric()更改此变量,则效果很好。知道这里发生了什么吗?
答案 0 :(得分:0)
如果使用haven
从library(haven)
从SPSS,SAS或Stata导入数据,则haven
会将变量格式存储在以下属性中:format.spss,format.sas或format .stata。 format.spss或format.sas。有时这可能会导致您的代码出现问题。 haven
具有删除这些格式和标签的几种功能:
gadd.us <- haven::zap_formats(gadd.us)
gadd.us <- haven::zap_labels(gadd.us)
您可能还想尝试其他一些zap_
功能。