ハッシュの配列でキー単位で値を配列として取得する方法はありますか。
<元データ> tbl = [ { "date" => "2022/04/01 12:00:00", "X1" => "101", "X2" => "202", "X3" => "313" }, { "date" => "2022/04/01 12:02:00", "X1" => "102", "X2" => "204", "X3" => "314" }, { "date" => "2022/04/01 12:04:00", "X1" => "103", "X2" => "205", "X3" => "315" }, { "date" => "2022/04/01 12:06:00", "X1" => "104", "X2" => "207", "X3" => "316" }, { "date" => "2022/04/01 12:08:00", "X1" => "105", "X2" => "209", "X3" => "317" }, ] <取得したいデータ> X1 = ["101", "102", "103", "104", "105"] X2 = ["202", "204", "205", "207", "209"]
初歩的な質問かもしれませんが、、
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答4件
1
r.rb
ruby
1tbl = [ 2 { "date" => "2022/04/01 12:00:00", "X1" => "101", "X2" => "202", "X3" => "313" }, 3 { "date" => "2022/04/01 12:02:00", "X1" => "102", "X2" => "204", "X3" => "314" }, 4 { "date" => "2022/04/01 12:04:00", "X1" => "103", "X2" => "205", "X3" => "315" }, 5 { "date" => "2022/04/01 12:06:00", "X1" => "104", "X2" => "207", "X3" => "316" }, 6 { "date" => "2022/04/01 12:08:00", "X1" => "105", "X2" => "209", "X3" => "317" }, 7 { "date" => "2022/04/01 12:23:00", "X9" => "105" }, 8] 9 10values = {}.merge(*tbl) { |k, v1, v2| v1.instance_of?(Array) ? v1 + [v2] : [v1, v2] } 11p values
実行例
投稿2022/04/29 12:11
総合スコア22306
1
ベストアンサー
解決済みになってるのでなんですが、、、
keys = tbl.first.keys values = keys.map{|key| [key,tbl.map{|hash| hash[key]}]}.to_h
投稿2022/04/28 13:39
総合スコア22709
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント
0
<入力> tbl = [ { "date" => "2022/04/01 12:00:00", "X1" => "101", "X2" => "202", "X3" => "313" }, { "date" => "2022/04/01 12:02:00", "X1" => "102", "X2" => "204", "X3" => "314" }, { "date" => "2022/04/01 12:04:00", "X1" => "103", "X2" => "205", "X3" => "315" }, { "date" => "2022/04/01 12:06:00", "X1" => "104", "X2" => "207", "X3" => "316" }, { "date" => "2022/04/01 12:08:00", "X1" => "105", "X2" => "209", "X3" => "317" }, ] vals = {} tbl.each_with_index do |row, i| keys = row.keys keys.each do |key| if i == 0 vals[key] = [row[key]] else vals[key].push(row[key]) end end end vals.each do |val| p val end <結果> ["date", ["2022/04/01 12:00:00", "2022/04/01 12:02:00", "2022/04/01 12:04:00", "2022/04/01 12:06:00", "2022/04/01 12:08:00"]] ["X1", ["101", "102", "103", "104", "105"]] ["X2", ["202", "204", "205", "207", "209"]] ["X3", ["313", "314", "315", "316", "317"]]
投稿2022/04/28 08:04
編集2022/04/28 11:53総合スコア20
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
0
tbl.each do |row| keys = row.keys values = row.values p keys p values end
こんな感じでkeyとvalueで分けれます
投稿2022/04/28 06:55

退会済みユーザー
総合スコア0
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント

退会済みユーザー
2022/04/28 08:08
2022/04/28 13:35
関連した質問
Q&A
受付中
大量のデータ(csvファイル)を比較し差異がある行のみを確認するには
回答5
クリップ3
更新
2022/01/12
Q&A
解決済
jsonファイルのシングルクォーテーションをダブルクォーテーションに置換するコードが書きたい
回答3
クリップ1
更新
2021/04/01
Q&A
解決済
JAVA for文を用いた数字を並べるプログラム
回答4
クリップ0
更新
2021/07/02
Q&A
受付中
修正したマイグレーションファイルを適用させたい。
回答2
クリップ0
更新
2023/02/07
Q&A
解決済
PHPで配列に配列の追加
回答2
クリップ0
更新
2017/04/18
Q&A
解決済
別テーブルのカウント数を条件にしてselectしたい
回答5
クリップ0
更新
2017/11/09
Q&A
解決済
[ruby]2次元ハッシュ配列のキーごとの値を配列として取得する
回答4
クリップ0
更新
2022/05/06
Q&A
解決済
PythonのNumpyにおいてリストの形式を保持したまま計算する方法
回答4
クリップ0
更新
2023/03/01
同じタグがついた質問を見る
Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2022/05/06 00:35