質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

Q&A

解決済

1回答

13460閲覧

Rでデータフレーム内の文字列を変換したい

beij

総合スコア16

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

1グッド

0クリップ

投稿2017/11/10 08:01

アンケート調査で集まったデータをRで扱えるように数字にコーディングしようとしているのですが、データフレーム内の文字列置換の方法がわかりません。
例えば以下のようなデータフレームがあるとします。

性別Q1Q2
とても当てはまるはい
どちらでもない(無回答)
とても当てはまるいいえ

この際に性別列の”男”を1、"女"を2と変換する、Q1列の"とても当てはまる"を5,"どちらでもない"を3にするといった処理を行いたいです。
また、Q3列の無回答部分は空欄のままなのですが、ここは何も処理せずともNAとして認識されるのか、されないとしたらどのようにすればNAとして認識されるのかについてもお聞きしたいです(データ形式はcsv)

https://teratail.com/questions/99228
以前、ここでデータが一列のみの文字列置換はお聞きしたのですが、データフレームで管理する必要性が出てきたので質問させていただきました。

なにとぞよろしくお願いいたします。

designlimn👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

各列をベクトルとして扱い、sapplyを適用して一括変換すると良いでしょう。
下の例では、例題の内容をデータフレームxxに取りこみ、1列目をコード化して4列目に、2列目をコード化して5列目に、それぞれ付け加えています。

R

1# 変換表 2category <- matrix(c( 3 "男", "1", 4 "女", "2", 5 "とても当てはまる", "positive", 6 "少し当てはまる", "positive", 7 "あまり当てはまらない", "negative", 8 "まったく当てはまらない", "negative", 9 "どちらでもない", "none" 10 ), byrow=T, ncol=2 11) 12colnames(category) <- c("text","label") 13 14# 変換関数: 文字列→コード 15cat_no <- function(x){ 16 r <- as.character(category[category[,"text"]==x, "label"]) 17 return(ifelse(length(r)==0, NA, r)) 18} 19 20# データ入力 21xx <- read.csv("~/test.csv", header=T) 22## 空欄をnaにしたい場合は次の様にする。 23## xx <- read.csv("~/test.csv", header=T, na.strings="") 24 25#変換 26xx[,4] <- sapply(xx[,1], cat_no) 27xx[,5] <- sapply(xx[,2], cat_no) 28 29print(xx)

投稿2017/11/10 10:32

編集2017/11/10 10:42
KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

beij

2017/11/10 11:52

ご回答ありがとうございますm(_ _)m こちらも試してみたところ、上手くいきました! これで調査の分析もスムーズに行きそうです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問