Rでデータをいじりたいのですができなくて困っています。したいことは以下の通りです。
途中まででもいいので分かる方いたら教えてください。
・n行10列のデータフレームで、1~6までの数字がランダムに書かれたものがある
①1~6までの数字にそれぞれ名前をつける(1=”a”, 2="b"…)
②各行ごとに、a,b…と名前がついたものがいくつあるかの行列を作りたい。つまり、n行6列のデータフレームにする。
ちなみに名前はつけなくても、とにかく各行ごとに各数字の個数が表せれば問題ありません。(なお順番は1からがよいです)
例えば、
1234543211
1234512312
2262412124
1235232344
というものがあったら、これを
322210
332110
240201
132210
にしたいということです。
データはcsv.から読み込んでいます。スクリプトでも関数でもよいです。どうぞよろしくお願いします。
No.1ベストアンサー
- 回答日時:
企業でSQCを推進する立場の者です。
アルファベットに置き換える必要性はありませんよね。
とりあえず、全部コピペして実行してみて下さい。
すると、出力はこうなります。
行番号が出ますが、それはyが配列だからです。
X1 X2 X3 X4 X5 X6
1 3 2 2 2 1 0
2 3 3 2 1 1 0
3 2 5 0 2 0 1
4 1 3 3 2 1 0
####################################
# ここは、read.csvか何かで書きなおして下さい。
num <- c(
1234543211,
1234512312,
2262412124,
1235232344)
# 1番目の引数の十進数(桁数は2番目の2番目の引数)を数値列に分解
dec2one <- function(num,digit=0){
if(num <= 0 && digit <= 0){
return(NULL)
}else{
return(append(Recall(num%/%10,digit-1),num%%10))
}}
# 1番目の引数の羅列中の各数値を1から2番目の引数の数までカウントする
count.dec <- function(arr,max){
x <- NULL
for(i in 1:max){
x <- append(x,sum(arr==i))
}
return(x)
}
# ここからがメインルーチン
y <- NULL
for(i in 1:length(num)){
arr <- dec2one(num[i],10)
y <- rbind(y,count.dec(arr,6))
}
(y <- data.frame(y))
非常にわかりやすい説明ありがとうございます。文字列にしなくても実際にできて感激しました。どのような流れで行い、何をしたかはとても理解できましたが、教えていただいた関数の式の意味がまだ消化しきれていないのでじっくり考えてみようと思います。色々と応用できそうなのでこれから勉強頑張ります。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラミング python pandas 固定長データの出力 2 2022/08/16 11:22
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Ruby 初心者プログラミング 3 2022/10/12 11:31
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ひいおばあちゃんがハーフだっ...
-
クオーターの次はなんですか?
-
ひいおばあちゃんがクォーター...
-
OCNモバイルone の請求について
-
one drive 容量いっぱいだそう...
-
No one of us can〜 って覚えた...
-
Yモバイルの 留守番電話の録音...
-
クソツール one drive にアップ...
-
もしも No.1→ナンバーワン No1 ...
-
How old onwards do we need to...
-
Windows 10でモバイルホットス...
-
「IMEI」(識別番号、シリアル...
-
ノートPCで屋外でメール、イン...
-
a friend of mine と one of my...
-
スマホが壊れて連絡できません
-
一台スマホあるのですが、Twitt...
-
スマホ本体とSIMカードを新しく...
-
21世紀って、英語でなんてい...
-
スマホはスリープ中に通信してる?
-
ゲーム時にイヤホン等の外部機...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クオーターの次はなんですか?
-
Yモバイルの 留守番電話の録音...
-
ひいおばあちゃんがハーフだっ...
-
OCNモバイルone の請求について
-
How old onwards do we need to...
-
Windows 10でモバイルホットス...
-
もしも No.1→ナンバーワン No1 ...
-
ひいおばあちゃんがクォーター...
-
スマホが壊れて連絡できません
-
a friend of mine と one of my...
-
one drive 容量いっぱいだそう...
-
ラップで良く使われる言い回し...
-
No one of us can〜 って覚えた...
-
21世紀って、英語でなんてい...
-
スマホはスリープ中に通信してる?
-
「IMEI」(識別番号、シリアル...
-
スマホを格安スマホにしようと...
-
ノートPCで屋外でメール、イン...
-
レゲエ用語の意味を教えてください
-
How many days is good to visi...
おすすめ情報