데이터 정리: 이름이 약간 다르고 교차하지 않는 데이터를 갖는 여러 열을 하나로 결합하는 방법은 무엇일까요?두 개 이상의 서로 다른 소스에서 형성된 CSV 파일을 내보냈는데, 각 소스의 열 이름이 약간씩 다릅니다.
어느 행도 그 열 중 두 개 이상에 데이터가 없습니다. 아래 스크린샷과 같이:

이 모든 것을 하나의 열로 합치려면 어떻게 해야 하나요?
한 가지 아이디어는 사용하는 것입니다
Combine Columns()
그러면 다중 응답 열이 생성되지만 데이터가 교차하지 않으므로 열 전체에 걸쳐 숫자가 하나만 생성됩니다. 그런 다음 데이터 유형을 숫자로, 모델링 유형을 연속으로 강제로 지정합니다. 하지만 경고\오류가 발생합니다.
더 깔끔한 방법이 있나요?
자동화 및 스크립팅기본 데이터 분석 및 모델링Re: 데이터 정리: 이름이 약간 다르고 교차하지 않는 데이터를 여러 열에 어떻게 결합할까요?나는 이렇게 처리할 것이다
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:AA bb = Sum( :AA bb, :AA_bb_ )
);
Sum() 함수를 사용하면 누락된 값을 무시하므로 원하는 값을 얻을 수 있습니다.
Re: 데이터 정리: 이름이 약간 다르고 교차하지 않는 데이터를 여러 열에 어떻게 결합할까요?짐,
정말 감사합니다.
이 솔루션을 사용하려고 합니다.
이제 열 이름이 하드코딩되지 않도록 스크립트를 작성하려고 합니다.
왜 여기서 오류가 발생하는지 잘 모르겠습니다.
For Each Row(
Column("AA bb") = 1234;
//Sum( :AA bb, :AA _bb_ )
);오류는:
'Assign'의 액세스 또는 평가에서 행 1에 L 값이 아닌 개체에 할당을 시도 중입니다. Column( "AA bb" ) = /*###*/1234 /*###*/
Re: 데이터 정리: 이름이 약간 다르고 교차하지 않는 데이터를 여러 열에 어떻게 결합할까요?아이디어는 함수를 작성하고 해당 함수에 사전을 제공하는 것입니다.
이런 것:
Names Default To Here( 1 );
dt = Current Data Table();
dict = {"AA bb", "AA _bb_"};
For Each Row(
Column(dict[1]) = Sum( Column(dict[1]), Column(dict[2]) )
);이 변형에서만 다음과 같은 오류가 발생합니다.
'Sum'의 접근 또는 평가에서 행 1에 스칼라, 행렬 또는 목록이 되는 인수가 필요합니다. Sum/*###*/(Column( dict[1] ), Column( dict[2] ))
때로는 Column()이 예상대로 작동하고, 때로는 그렇지 않다는 사실을 이해할 수가 없습니다. 때로는 As Column()을 사용해야 합니다. 때로는 다른 것이 필요합니다.
PS As Column()이 작동했습니다. 누군가 Column()과 As Column()의 차이점을 설명해 줄 수 있나요?
Re: 데이터 정리: 이름이 약간 다르고 교차하지 않는 데이터를 여러 열에 어떻게 결합할까요?좋아요, 마지막 코드 조각은 여기에 있습니다.
Names Default To Here( 1 );
dt = Current Data Table();
dict = {"AA bb", "AA _bb_"};
sumExpr = Expr( Sum() );
For Each( {value, index}, dict,
Insert Into( sumExpr, Name Expr( As Column( value ) ) )
);
Eval(
Substitute(
Expr(
For Each Row(
As Column( dict[1] ) = placeholder
)
),
Expr( placeholder ), Name Expr( sumExpr )
)
);
개선할 방법이 있나요?
Re: 데이터 정리: 이름이 약간 다르고 교차하지 않는 데이터를 여러 열에 어떻게 결합할까요?필요한 것보다 조금 더 복잡합니다. 이 코드도 너무 많이 생각하지 않고도 작동합니다. 원하는 경우 두 개 이상의 열 이름을 허용합니다.
Names Default To Here( 1 );
dt = Current Data Table();
dict = {"AA bb", "AA _bb_"};
For Each Row( dt,
As Column(dict[1]) = Sum( Transform Each( {v, i}, dict, As Column( v ) ) )
);Re: 데이터 정리: 이름이 약간 다르고 교차하지 않는 데이터를 여러 열에 어떻게 결합할까요?Column()은 열 객체를 참조하고, As Column()은 현재 Row()의 해당 열 값을 참조합니다.
Re: 데이터 정리: 이름이 약간 다르고 교차하지 않는 데이터를 여러 열에 어떻게 결합할까요?다음 반복에서는 열 이름이 사전에는 존재하지만 테이블에는 존재하지 않는 경우를 설명합니다.
Names Default To Here( 1 );
dt = Current Data Table();
dict = {"AA bb", "AA _bb_", "AA cc"};
sumExpr = Expr( Sum() );
For Each( {value, index}, dict,
If( Try( Column( value ) << Get Name, "nocolumn" ) != "nocolumn",
Insert Into( sumExpr, Name Expr( As Column( value ) ) )
)
);
Name Expr(sumExpr);
Try(
Eval(
Substitute(
Expr(
For Each Row(
As Column( dict[1] ) = placeholder
)
),
Expr( placeholder ), Name Expr( sumExpr )
)
),
Write("No columns found")
)
Transform Each를 사용하는 경우 어떻게 해야 할까요?
Re: 데이터 정리: 이름이 약간 다르고 교차하지 않는 데이터를 여러 열에 어떻게 결합할까요?연결 도구를 사용해 보세요.
두 변수를 모두 포함하는 새 열을 만듭니다.
열을 마우스 오른쪽 버튼으로 클릭하세요
수식을 선택하여 수식 편집기를 엽니다.
수식 편집기에서 왼쪽에 있는 함수 목록으로 이동합니다.
문자에서 연결을 찾아 선택합니다.
Concatenate 함수의 첫 번째 인수 상자로 첫 번째 열을 끌거나 선택합니다.
두 번째 열을 다음 인수 상자로 끌어다 놓거나 선택합니다.
확인 또는 적용을 클릭하면 새로운 결합된 열이 생성됩니다.
Re: 데이터 정리: 이름이 약간 다르고 교차하지 않는 데이터를 여러 열에 어떻게 결합할까요?Try()를 추가하면 됩니다.
Names Default To Here( 1 );
dt = Current Data Table();
dict = {"AA bb", "AA _bb_", "AA cc"};
For Each Row( dt, As Column( dict[1] ) = Sum( Transform Each( {v, i}, dict, Try( As Column( v ), . ) ) ) );