2017-10-23 3 views
1

내가 dataframe에 지정된 시험과 같은 열이 가치 : 나는 조건과 같은 dataframe에 새로운 열하여 clientType을 만들 필요가추가 열

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

, 즉 = 클라이언트 경우 P 또는 Q clienttype = first. 클라이언트 유형 = R 또는 S clienttype = second이면 계속됩니다. 아무도 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 

당신은 단지 두 가지 옵션 (예를 들어, firstsecond)이 방법이 유용 할 수 있던 경우에.

1

당신은 우리에게 당신의 테이블의 컬럼의 종류를 말하지 않았지만, 모든 항목이 단일 문자를하는 경우, 그들이 최고의 q를 문자 형식으로 표시됩니다 :

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

이제하여 clientType는 최고의 저장

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