使用避免来读取.sav(SPSS_文件):将标记的向量更改为字符串或因子

时间:2016-12-23 19:17:11

标签: r spss r-haven

我正在使用haven库将.sav(SPSS)文件读入R.

有些值会被视为labelled vector

以下是一个例子:

> str(df$instructional_practice)
Class 'labelled'  atomic [1:4136] 2 2 6 6 8 8 NaN NaN 17 1 ...
  ..- attr(*, "label")= chr "intructional practice teacher is using when signaled"
  ..- attr(*, "format.spss")= chr "F8.2"
  ..- attr(*, "labels")= Named num [1:18] 1 2 3 4 5 6 7 8 9 10 ...
  .. ..- attr(*, "names")= chr [1:18] "1 Lecture" "2 Seatwk-Ind" "3 Review-Ind" "4 Seatwk-Grp" ...

如何将vector的值设为标签名称?

2 个答案:

答案 0 :(得分:4)

您可以使用haven::as_factor将标记的矢量转换为因子,使用标签作为级别。

您可以在单个矢量上使用它:

df$instructional_practice = as_factor(df$instructional_practice)

但您也可以在整个data.frame上使用它。默认情况下,在data.frame上使用as_factor会将所有标签转换为任何标记变量的因子级别。

df = as_factor(df)

答案 1 :(得分:1)

目前它非常像一个R因素而且我在猜测(虽然它有点模糊)你要么想要一个R因子,要么你想要一个字符向量。如果您想要一个R字符向量,其值替换为当前数值,您可以使用数值作为labels属性名称的索引:

 newvec <- names( attr( f$instructional_practice , "labels"))[f$instructional_practice]