質問

いつものように、私からあっSPSSファイルのように輸入されR spss.get 機能から Hmisc パッケージです。私の気付 labelled クラス Hmisc::spss.get 加えてすべての変数に data.frame, しい取り外してください。

labelled クラスを与えてくれてい頭痛がいを試してみてください ggplot やってもいいと彼分析!ついに取り除 labelled クラスから変数 data.frame.する方法を教えてください。そんなことが可能なのでしょうかは全くないのでしょうか。反対の場合、どのような私のその他のオプション?

ていきたいと思っておりますバイパス変数の編集"から"を as.data.frame(lapply(x, as.numeric))as.character 場合...んんで走らせたいというSPSS、削除のラベルを手動でないSPSSものケアをインストールす)!

よろしく!

役に立ちましたか?

解決

あなたは引数でspss.get中 "と表示された" 変数の作成を回避することができます。、use.value.labels = FALSE

w <- spss.get('/tmp/my.sav', use.value.labels=FALSE, datevars=c('birthdate','deathdate'))
標識されたベクトルのクラスは単にむしろC(「標識された」、「因子」)より「標識」した場合は、

バッタチャリヤからコードが失敗する可能性があり、それがされている必要があり、その場合:

class(x[[i]]) <- NULL  # no error from assignment of empty vector

あなたが報告エラーがこのコードで再現することができます:

> b <- 4:6
> label(b) <- 'B Label'
> str(b)
Class 'labelled'  atomic [1:3] 4 5 6
  ..- attr(*, "label")= chr "B Label"
> class(b) <- class(b)[-1]
Error in class(b) <- class(b)[-1] : 
  invalid replacement object to be a class string

他のヒント

ここで私は完全にラベルを取り除く方法です。 Jyotirmoyのソリューションが、作品ベクトルのためだけでなく、data.frameに似ています。 (フランク・ハレルへの部分的なクレジット)

clear.labels <- function(x) {
  if(is.list(x)) {
    for(i in 1 : length(x)) class(x[[i]]) <- setdiff(class(x[[i]]), 'labelled') 
    for(i in 1 : length(x)) attr(x[[i]],"label") <- NULL
  }
  else {
    class(x) <- setdiff(class(x), "labelled")
    attr(x, "label") <- NULL
  }
  return(x)
}

を使用するには、次のように:

my.unlabelled.df <- clear.labels(my.labelled.df)

あなたはread.spssパッケージからforeign機能を試してみることができます。

labelled

が作成したspss.getクラスを取り除くためにラフと準備の方法
for (i in 1:ncol(x)) {
    z<-class(x[[i]])
    if (z[[1]]=='labelled'){
       class(x[[i]])<-z[-1]
       attr(x[[i]],'label')<-NULL
    }
}

しかし、あなたはlabelledが問題を引き起こす例をお願いできますか?

私はMAEDによって作成されたデータフレームxで変数spss.getを持っている場合は、私が持っています:

> class(x$MAED)
[1] "labelled" "factor"  
> is.factor(x$MAED)
[1] TRUE

因子(言う)は何の問題もないはず見込んだから、よく書かれたコードます。

まあ、私はunclass関数がクラス除去するために利用することができることを考え出し(アイアイ言うだろうが、?!):

library(Hmisc)
# let's presuppose that variable x is gathered through spss.get() function
# and that x is factor
> class(x)
[1] "labelled" "factor"
> foo <- unclass(x)
> class(foo)
[1] "integer"

これは誰もがこれを突破した場合、私は答えとして、それをチェックしましょう...ベクトルのバック変換束を想像し、ラッキーな解決策ではありません...

とします:

library(Hmisc)
w <- spss.get('...')

あなたが使用することによって、「VAR1」と呼ばれる変数のラベルを削除することができます:

attributes(w$var1)$label <- NULL

あなたも「labbled」クラスを削除したい場合は、あなたが行うことができます:

class(w$var1) <- NULL 

変数は複数のクラスを持っている場合、またはます:

class(w$var1) <- class(w$var1)[-which(class(w$var1)=="labelled")]

希望このことができます!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top