2016-10-18 6 views
1

私はExcelにあるデータを持っており、そのデータフレームを「データ」という名前でデータフレームに格納するためにそれを読みます。同様に、各変数の値ラベルとそのコードは、名前マップによって別のシートに入れられます。私はこのシートも読んで、データフレームを名前 "地図"で保存します。ファイルへRを効率的に使用してデータフレームの数値コードにラベルを付ける

リンクがある - https://www.wetransfer.com/downloads/bf0c5bfa88be20e4037d7fdc828ca66320161018075428/7f82a4以下

あなたがコードの少ない数の細胞がNAである気づく場合sheets-

library("readxl") 
data <- read_excel("data_v1.xlsx",sheet = "data") 
map <- read_excel("data_v1.xlsx",sheet = "map") 

を読み込むためのコードです。

マップシートの各コードに値ラベルをデータに付加したいとします。私は検索をしていましたが、これを行う方法の1つが要因を使用することであることを認識しました。レベルとラベルを定義するところ。私はレベルのためのマップファイルで元の変数名を使用することができ、ラベルのために "_desc"を接尾辞として使うことができます。

これを行う効率的な方法をお勧めしますか?ループでこれを行うことができれば、個々の変数のコードを記述するのではなく、私は意味しますか?私が付いているデータファイルでは、これは単なるサンプルであり、元のデータファイルには100個以上の変数があり、ラベルを付けるというこのタスクを実行する必要があります。

最後に、どのように変数ラベルを付けることができますか?私は、

Q1は「ブランドの香りのように」ラベルを持つべき「ブランドの味のように」 Q3ラベルを持つべき「ブランドのパッケージと同様に」 Q2ラベルを持っている必要があり Q4を意味します

変数名を持つ1つの列と変数のラベルを持つ1つの列で別々のシートを作成するといいでしょうか?これらのラベルを要素に変数として付け加えるには、私が信じる価値のためにしか機能しません。

最後に、これらのラベルが表示されるはずのテーブル/クロステーブルを生成する必要があります。これらの値+変数ラベルが表示されるグラフ。

ありがとうございました!

プラサド

+0

名前 'Brand-desc'は、マップ内のキー値に接尾辞' _desc'があるパターンを暴露します。これはケース全体を通してのケースですか、あなたの例での例外なのでしょうか? – roman

答えて

0

この繰り返しの仕事をするためのforループを書くだろう。データとマップの変数名が同じかどうかを確認する必要があります。あなたのデータは利用できませんが、私は以下のように動作するはずです。

for (i in names(data)[which(is.element(names(data),names(map)))]){ 
    data[[i]] <- factor(data[[i]], 
           levels = na.omit(map[[i]]), 
           labels = na.omit(map[[paste0(i,"_desc")]])) 
} 

na.oimtは、NAsを持つ行を省略します。

+0

ありがとうございます! – user1412

1

概念的あなたはそこから行くこの

city_labels <- map$City_desc[match(data$City, map$City)] 

ようなものが必要...判断の問題です。どのくらい反復的な仕事ですか?特定のものが変わる場合は、事前にそれらを知ることができますか?100をして、それぞれの場合に同じ名前と_descの対応する変数が接尾辞としてある場合は、このように仮定する関数を記述します:

あなたは上記の私のコメントに問題を修正した後
getLabels <- function(var_name) { 
    map[,paste0(var_name, "_desc")][match(data[,var_name], map[,var_name])] 
} 

getLabels("City") 

、あなたはこれを行うことができます。

new_dat <- data.frame(lapply(names(data), getLabels)) 
names(new_dat) <- names(data) 
new_dat 

をして、あなたはあなたの翻訳されたデータセットを持っている - 保存このどこかに安全な:-)

+0

こんにちはローマン、はい、上記のあなたのコメントは "Brand_desc"であったはずです。あなたのソリューションはほぼそこにありますが、変数のレベルもチャーターラベルに変換します。あなたがレベルをチェックするなら、例えば。 Q1の場合、1,2,3の代わりに "同意"、 "どちらでもない"、 "同意しない"などとなります。レベルは文字なので、平均/ sdなどを生成することはできません。私は頻度+平均でクロス集計を生成したいが、平均を生成することはできない。私は、何らかの方法でコード変数と "_desc"変数をマップファイルに組み合わせて使用​​することができれば、問題を解決できると思います。提案する。 – user1412

+0

ありがとうございます。私は、分析ではカテゴリデータを数値として扱うことはしません。あなたは、Rice&Gaines [順序異質性](http://www.pnas.org/content/91/1/225.abstract)などの順序付けされたカテゴリとして分析することができます。 Rは、優れた方法ではなく、カテゴリのデータに対して数値演算を実行させることはありません。 – roman

関連する問題