2017-10-23 2 views
1

を評価:は、私がデータフレームという名前のテストでは、このようなコラムをしている

Name Client 
A  P 
B  Q 
C  R 
D  S 
E  T 

私が条件であれば、そのクライアントと同じデータフレームに新しい列のClientTypeを作成する必要があります= PまたはQ clienttype = first。クライアントタイプ= RまたはSクライアントタイプ=秒のように。誰でもkdbでこれを行う方法を教えてもらえますか?ありがとう

答えて

2

これは辞書で解決できますか?これに

q)update ClientType:(`P`Q`R`S!`first`first`second`second)Client from tab 
Name Client ClientType 
---------------------- 
A P  first 
B Q  first 
C R  second 
D S  second 
E T 

拡張子:あなたはまた、この種の問題のためのベクトルの条件文?[;;]を使用することができます。残念ながら、多くのネストされたベクトルの条件文につながるには、この場合には:

update Clienttype:?[Client in`P`Q;`first;?[Client in`R`S;`second;`third]]from tab 
Name Client Clienttype 
---------------------- 
A P  first 
B Q  first 
C R  second 
D S  second 
E T  third 

あなたは2つのだけ可能なオプション(例えばfirstsecond)このアプローチは有用であることが分かる可能性を持っていた場合。

1

あなたは、あなたのテーブルに私たちの列の種類を教えてくれませんでしたが、すべてのエントリは、単一の文字であれば、それらは最高のq個のchar型で表現されています。今

q)show t:([]Name:"ABCDE";Client:"PQRST") 
Name Client 
----------- 
A P 
B Q 
C R 
D S 
E T 

、クライアントタイプが最もよく保存されています

q)update Clienttype:1+(("i"$Client)-"i"$"P")div 2 from t 
Name Client Clienttype 
---------------------- 
A P  1 
B Q  1 
C R  2 
D S  2 
E T  3 

たり、記号を使用しなければならない場合、

q)types:`first`second`third`fourth 
q)update Clienttype:types(("i"$Client)-"i"$"P")div 2 from t 
Name Client Clienttype 
---------------------- 
A P  first 
B Q  first 
C R  second 
D S  second 
E T  third 
として計算することができる番号など
関連する問題