Use of haven to read .sav (SPSS_ files): Change labeled vector 为字符串或因子
Use of haven to read .sav (SPSS_ files): Change labelled vector to character string or factor
我正在使用 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
的值成为标签名称?
目前它非常像一个 R 因子,我猜(虽然有点模糊)你要么想要一个 R 因子,要么你想要一个字符向量。如果您想要一个 R 字符向量,其值替换当前数值,您可以使用数值作为 labels
属性名称的索引:
newvec <- names( attr( f$instructional_practice , "labels"))[f$instructional_practice]
您可以使用 haven::as_factor
将标记的向量转换为因子,使用标签作为水平。
您可以在单个向量上使用它:
df$instructional_practice = as_factor(df$instructional_practice)
但你也可以在整个data.frame上使用它。默认情况下,在 data.frame 上使用 as_factor
会将所有标签转换为任何标记变量的因子水平。
df = as_factor(df)
我正在使用 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
的值成为标签名称?
目前它非常像一个 R 因子,我猜(虽然有点模糊)你要么想要一个 R 因子,要么你想要一个字符向量。如果您想要一个 R 字符向量,其值替换当前数值,您可以使用数值作为 labels
属性名称的索引:
newvec <- names( attr( f$instructional_practice , "labels"))[f$instructional_practice]
您可以使用 haven::as_factor
将标记的向量转换为因子,使用标签作为水平。
您可以在单个向量上使用它:
df$instructional_practice = as_factor(df$instructional_practice)
但你也可以在整个data.frame上使用它。默认情况下,在 data.frame 上使用 as_factor
会将所有标签转换为任何标记变量的因子水平。
df = as_factor(df)