2017-07-10 18 views
1

Propertyという名前の1つの列を持つDatasetオブジェクトで作業しています。下図に示すように、データが指定されているWolfram Mathematicaを使用して列のデータを修正する方法は?

:範囲に基づいて

a column of this kind of data

、私は新しい値を代入し、最終的には問題の列全体を交換したいと思います。たとえば、範囲が500〜5000の場合、値1を取得したいと思います.5000〜50000の場合は、値2などを指定します。

+0

「データセット」と同じ意味ですか?列を置き換えたり、新しい列を追加したり、再コード化された列を抜き出したりしますか? – Alan

+0

はいデータセットタイプのデータです。問題のカラムをカラムに置き換えたい。私は私の全体のデータを "データセット"として – HEART94

答えて

1

私が理解しているように、データセットを変更することによって、データセットの1つの列を再コードしたいとします。私の知る限り、データセットは実際には可変型ではありません。それを受け入れることができれば、次に進む2つの方法があります。

まず、いくつかの人工データを取得しましょう。元のデータセットが変更されていないこと

ds[All, {2 -> f}] 

注:

ds = Dataset[<|"x" -> RandomInteger[10], 
    "y" -> Interval[{10^#, 10^(# + 1)}]|> & /@ Range[5]] 

は、今、私たちは機能fと第二のカラムを再コーディングするとします。 (通常は良いことです) 試してみる機能の例を以下に示します。

ここで大きな問題は、新しいデータセットに全く同じ名前の列があり、解釈が全く異なることです。これが気になる場合は、代わりに新しい名前でデータセットに追加することができます。

Append[#, "y2" -> f[#y]] & /@ ds 

編集:ドル記号について

何?完全な形のエントリーを表示しない限り、私は推測する必要があります。だから私は、次の人工的なデータが有用であるのに十分な私たちが近づいていることを推測されます:

ds = Dataset[<|"x" -> RandomInteger[10], 
"y" -> Quantity[Interval[{10^#, 10^(# + 1)}], "USDollars"]|> & /@ Range[5]] 

これはちょうど私達がfに小さな変更を加える必要があることを意味:

f[Quantity[Interval[{x_, _}], _]] := Log[10, x] 

その後、我々は交換することができますか前と同じように追加してください:

ds[All, {2 -> f}] 
Append[#, "y2" -> f[#y]] & /@ ds 
+0

しかし、処理中に$記号を削除するにはどうすればよいですか?私のデータは質問に示されている通りです。私はあなたの説明を理解しました。 – HEART94

+0

ありがとうございました。それは私に望ましい出力を得るのを助けました。 – HEART94

0

私たちは、「プロパティ」という名前の列の整数x(私たちはMathematicaであるとして1から始まる)、xに変換した範囲の列を取得するためのコードでグリッドstuffをお持ちの場合は - である - 私はあなたが欲しいと思うものに以下の下:

Replace[#1[[1]] & /@ stuff, x_ :> IntegerLength[x[[1, 1]]] - 2, {1}] 

これは、指定された列内のすべての範囲を取り、あなたの結果を与える範囲の下の部分の長さから2を減算します。

たとえば、私たちはあなたのサンプルを取る場合範囲:

stuff = {{$Interval[{500, 50000}], things, things}, 
    {$Interval[{5000, 5000000}], things, things}} 

をそしてを通してそれを実行する私たちのReplace

Replace[#1[[1]] & /@ stuff, x_ :> IntegerLength[x[[1, 1]]] - 2, {1}] 

我々が得るOut:の:

{1, 2} 

することができます上記のReplaceを簡単に変更して、transfo現場でのカラムはstuffである。

+0

x [[1、_]]が$ Interval(例えば、{5000、5000000})のリストから取得するよう命名しました。 x [[1,1]]は、そのリストの最初の部分(範囲の下限)を取得します。 IntegerLengthは、このような整数の桁数を取得します。 – llvmastproject

+0

こんにちは、データセット[All、 "Property"]を書いて、名前のものをカラムに置き換えようとしましたが、テーブルの最初の行と最初のカラムにアクセスしています。これを修正する手助けをしてください。 – HEART94

+0

私はデータセットに精通していません。私が上に持っているものは、リストのリストで動作します。リストのリストのようにデータセットとインターフェースできますか? [All、 "Property"]データセットの結果のサンプルを教えていただけますか? – llvmastproject