안녕하십니까 ,
변수 유형을 사용하여 ID당 여러 행에서 하나의 변수(type2)를 만들려고 합니다. 다음과 같이 테이블을 덮고 싶습니다.
ID | 유형 |
1 | NS |
1 | NS |
1 | NS |
2 | NS |
2 | NS |
삼 | NS |
삼 | NS |
삼 | NS |
NS:
여기서 type2는 다음과 같습니다.
유형이 항상 A이면 type2=A입니다.
유형이 항상 B이면 type2=B입니다.
type이 A와 B의 조합이면 type2=C입니다.
감사 해요
이를 수행하는 여러 가지 방법. 아이디에 타입이 몇 번이나 나오는지 계산해 보았는데, 데이터에 나타난 아이디와 같은 양이면 유일한 타입이라는 것을 알 수 있습니다.
공식 요약:
Names Default To Here(1);
dt = New Table("From",
Add Rows(8),
New Column("ID", Numeric, "Nominal", Format("Best", 12), Set Values([1, 1, 1, 2, 2, 3, 3, 3])),
New Column("type", Character(16), "Nominal", Set Values({"A", "A", "B", "A", "A", "B", "B", "B"}))
);
dt_summary = dt << Summary(
Output table("To"),
Group(:ID),
N(:type),
Subgroup(:type),
Freq("None"),
Weight("None"),
statistics column name format("column"),
Link to original data table(0)
);
dt_summary << New Column("type2", Character, "Nominal",
<< Set Each Value(
If(:"type, A"n == 0, "B",
:"type, B"n == 0, "A",
"C"
)
)
);및 중복 행 선택과 함께 Col Sum을 사용하는 기타:
Names Default To Here(1);
dt = New Table("From",
Add Rows(8),
New Column("ID", Numeric, "Nominal", Format("Best", 12), Set Values([1, 1, 1, 2, 2, 3, 3, 3])),
New Column("type", Character(16), "Nominal", Set Values({"A", "A", "B", "A", "A", "B", "B", "B"}))
);
dt << New Column("type2", Character, Nomimal, Formula(
If(Col Sum(1, :ID) == Col Sum(1, :ID, :type),
:type,
"C"
)
));
wait(1);
dt:type2 << Delete Formula;
wait(1);
dt << Select Duplicate Rows(Match(:ID, :type2));<BR />wait(1);<BR />dt << Delete Rows;함수, 특히 Col Sum에 대한 자세한 내용은 스크립팅 인덱스를 참조하십시오.
안녕하십니까,
테이블이 :ID 및 :type별로 정렬될 수 있는 것 같습니다. 그렇다면, 또는 정렬하려는 경우 이를 활용하고 :type2 열에 대해 (상대적으로) 간단한 수식을 사용할 수 있습니다.
If( :type[Col Min( Row(), :ID )] == :type[Col Max( Row(), :ID )],
:type,
"C"
)
건배,
브래디