如何更改r数据表的结构

时间:2019-12-07 23:03:10

标签: r dataframe structure

我将少数几个从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()更改此变量,则效果很好。知道这里发生了什么吗?

1 个答案:

答案 0 :(得分:0)

如果使用havenlibrary(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_功能。