diff --git a/instat/dlgStringHandling.Designer.vb b/instat/dlgStringHandling.Designer.vb index f493db1db3..f083c1e899 100644 --- a/instat/dlgStringHandling.Designer.vb +++ b/instat/dlgStringHandling.Designer.vb @@ -81,6 +81,7 @@ Partial Class dlgStringHandling Me.rdoReplaceAll = New System.Windows.Forms.RadioButton() Me.rdoReplaceFirst = New System.Windows.Forms.RadioButton() Me.ucrPnlReplaceOptions = New instat.UcrPanel() + Me.rdoToNa = New System.Windows.Forms.RadioButton() Me.grpModifiers.SuspendLayout() Me.grpDetectOptions.SuspendLayout() Me.grpFindOptions.SuspendLayout() @@ -125,7 +126,7 @@ Partial Class dlgStringHandling Me.rdoDetect.FlatAppearance.CheckedBackColor = System.Drawing.SystemColors.ActiveCaption Me.rdoDetect.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.rdoDetect.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.rdoDetect.Location = New System.Drawing.Point(20, 4) + Me.rdoDetect.Location = New System.Drawing.Point(14, 4) Me.rdoDetect.Name = "rdoDetect" Me.rdoDetect.Size = New System.Drawing.Size(86, 41) Me.rdoDetect.TabIndex = 1 @@ -142,10 +143,10 @@ Partial Class dlgStringHandling Me.rdoRemove.FlatAppearance.CheckedBackColor = System.Drawing.SystemColors.ActiveCaption Me.rdoRemove.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.rdoRemove.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.rdoRemove.Location = New System.Drawing.Point(338, 4) + Me.rdoRemove.Location = New System.Drawing.Point(392, 4) Me.rdoRemove.Name = "rdoRemove" Me.rdoRemove.Size = New System.Drawing.Size(80, 41) - Me.rdoRemove.TabIndex = 5 + Me.rdoRemove.TabIndex = 6 Me.rdoRemove.TabStop = True Me.rdoRemove.Text = "Remove" Me.rdoRemove.TextAlign = System.Drawing.ContentAlignment.MiddleCenter @@ -159,12 +160,12 @@ Partial Class dlgStringHandling Me.rdoReplaceNa.FlatAppearance.CheckedBackColor = System.Drawing.SystemColors.ActiveCaption Me.rdoReplaceNa.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.rdoReplaceNa.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.rdoReplaceNa.Location = New System.Drawing.Point(260, 4) + Me.rdoReplaceNa.Location = New System.Drawing.Point(314, 4) Me.rdoReplaceNa.Name = "rdoReplaceNa" Me.rdoReplaceNa.Size = New System.Drawing.Size(80, 41) - Me.rdoReplaceNa.TabIndex = 4 + Me.rdoReplaceNa.TabIndex = 5 Me.rdoReplaceNa.TabStop = True - Me.rdoReplaceNa.Text = "Replace NA" + Me.rdoReplaceNa.Text = "From NA" Me.rdoReplaceNa.TextAlign = System.Drawing.ContentAlignment.MiddleCenter Me.rdoReplaceNa.UseVisualStyleBackColor = True ' @@ -176,7 +177,7 @@ Partial Class dlgStringHandling Me.rdoReplace.FlatAppearance.CheckedBackColor = System.Drawing.SystemColors.ActiveCaption Me.rdoReplace.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.rdoReplace.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.rdoReplace.Location = New System.Drawing.Point(182, 4) + Me.rdoReplace.Location = New System.Drawing.Point(176, 4) Me.rdoReplace.Name = "rdoReplace" Me.rdoReplace.Size = New System.Drawing.Size(80, 41) Me.rdoReplace.TabIndex = 3 @@ -193,7 +194,7 @@ Partial Class dlgStringHandling Me.rdoFind.FlatAppearance.CheckedBackColor = System.Drawing.SystemColors.ActiveCaption Me.rdoFind.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.rdoFind.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.rdoFind.Location = New System.Drawing.Point(104, 4) + Me.rdoFind.Location = New System.Drawing.Point(98, 4) Me.rdoFind.Name = "rdoFind" Me.rdoFind.Size = New System.Drawing.Size(80, 41) Me.rdoFind.TabIndex = 2 @@ -503,9 +504,9 @@ Partial Class dlgStringHandling 'ucrPnlStringHandling ' Me.ucrPnlStringHandling.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink - Me.ucrPnlStringHandling.Location = New System.Drawing.Point(16, 1) + Me.ucrPnlStringHandling.Location = New System.Drawing.Point(10, 1) Me.ucrPnlStringHandling.Name = "ucrPnlStringHandling" - Me.ucrPnlStringHandling.Size = New System.Drawing.Size(409, 46) + Me.ucrPnlStringHandling.Size = New System.Drawing.Size(462, 46) Me.ucrPnlStringHandling.TabIndex = 0 ' 'grpReplaceOptions @@ -562,12 +563,30 @@ Partial Class dlgStringHandling Me.ucrPnlReplaceOptions.Size = New System.Drawing.Size(146, 75) Me.ucrPnlReplaceOptions.TabIndex = 0 ' + 'rdoToNa + ' + Me.rdoToNa.Appearance = System.Windows.Forms.Appearance.Button + Me.rdoToNa.FlatAppearance.BorderColor = System.Drawing.SystemColors.ActiveCaption + Me.rdoToNa.FlatAppearance.BorderSize = 2 + Me.rdoToNa.FlatAppearance.CheckedBackColor = System.Drawing.SystemColors.ActiveCaption + Me.rdoToNa.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.rdoToNa.ImeMode = System.Windows.Forms.ImeMode.NoControl + Me.rdoToNa.Location = New System.Drawing.Point(252, 4) + Me.rdoToNa.Name = "rdoToNa" + Me.rdoToNa.Size = New System.Drawing.Size(64, 41) + Me.rdoToNa.TabIndex = 4 + Me.rdoToNa.TabStop = True + Me.rdoToNa.Text = "To NA" + Me.rdoToNa.TextAlign = System.Drawing.ContentAlignment.MiddleCenter + Me.rdoToNa.UseVisualStyleBackColor = True + ' 'dlgStringHandling ' Me.AutoScaleDimensions = New System.Drawing.SizeF(96.0!, 96.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi Me.AutoSize = True - Me.ClientSize = New System.Drawing.Size(438, 483) + Me.ClientSize = New System.Drawing.Size(481, 483) + Me.Controls.Add(Me.rdoToNa) Me.Controls.Add(Me.ucrChkRemoveAll) Me.Controls.Add(Me.ucrInputReplaceNaBy) Me.Controls.Add(Me.ucrChkReplaceBy) @@ -657,4 +676,5 @@ Partial Class dlgStringHandling Friend WithEvents rdoReplaceAll As RadioButton Friend WithEvents rdoReplaceFirst As RadioButton Friend WithEvents ucrPnlReplaceOptions As UcrPanel + Friend WithEvents rdoToNa As RadioButton End Class diff --git a/instat/dlgStringHandling.vb b/instat/dlgStringHandling.vb index 65012c23c6..e95bca35ff 100644 --- a/instat/dlgStringHandling.vb +++ b/instat/dlgStringHandling.vb @@ -18,10 +18,10 @@ Imports instat.Translations Public Class dlgStringHandling Private bFirstload As Boolean = True Private bReset As Boolean = True - Private clsCountFunction, clsExtractFunction, clsDetectFunction, clsLocateFunction, clsReplaceFunction, clsReplaceAllFunction, - clsFixedFunction, clsRegexFunction, clsStringCollFunction, clsBoundaryFunction, clsRemoveFunction, clsReplaceNaFunction, + Private clsCountFunction, clsExtractFunction, clsDetectFunction, clsLocateFunction, clsReplaceFunction, clsReplaceAllFunction, clsNaIfFunction, + clsFixedFunction, clsRegexFunction, clsStringCollFunction, clsBoundaryFunction, clsRemoveFunction, clsReplaceNaFunction, clsStrToLowerFunction, clsStartsFunction, clsEndsFunction, clsMatchAllFunction, clsExtractAllFunction, clsLocateAllFunction, clsRemoveAllFunction, - clsReplaceCellFunction, clsAsDataFrameFunction, clsMutateFunction, clsReplaceGrepFunction As New RFunction + clsReplaceCellFunction, clsCurrentNewColumnFunction, clsAsDataFrameFunction, clsMutateFunction, clsReplaceGrepFunction As New RFunction Private clsPipeOperator As New ROperator Private clsDummyFunction, clsFindDummyFunction As New RFunction @@ -54,12 +54,14 @@ Public Class dlgStringHandling ucrPnlStringHandling.AddRadioButton(rdoFind) ucrPnlStringHandling.AddRadioButton(rdoReplaceNa) ucrPnlStringHandling.AddRadioButton(rdoRemove) + ucrPnlStringHandling.AddRadioButton(rdoToNa) ucrPnlStringHandling.AddParameterValuesCondition(rdoDetects, "string_handling", "detect") ucrPnlStringHandling.AddParameterValuesCondition(rdoReplace, "string_handling", "replace") ucrPnlStringHandling.AddParameterValuesCondition(rdoFind, "string_handling", "find") ucrPnlStringHandling.AddParameterValuesCondition(rdoReplaceNa, "string_handling", "replace_na") ucrPnlStringHandling.AddParameterValuesCondition(rdoRemove, "string_handling", "remove") + ucrPnlStringHandling.AddParameterValuesCondition(rdoToNa, "string_handling", "to_na") ucrPnlDetectOptions.AddRadioButton(rdoDetects) ucrPnlDetectOptions.AddRadioButton(rdoStarts) @@ -143,7 +145,8 @@ Public Class dlgStringHandling ucrChkReplaceBy.AddToLinkedControls(ucrInputReplaceNaBy, {True}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True, bNewLinkedChangeToDefaultState:=True, objNewDefaultState:="NA") ucrPnlStringHandling.AddToLinkedControls({ucrInputReplaceBy, ucrPnlReplaceOptions}, {rdoReplace}, bNewLinkedAddRemoveParameter:=True, bNewLinkedHideIfParameterMissing:=True) - ucrPnlStringHandling.AddToLinkedControls({ucrInputPattern, ucrChkIgnoreCase, ucrChkIncludeRegularExpressions}, {rdoDetect, rdoFind, rdoReplace, rdoRemove}, bNewLinkedHideIfParameterMissing:=True) + ucrPnlStringHandling.AddToLinkedControls(ucrChkIncludeRegularExpressions, {rdoDetect, rdoFind, rdoReplace, rdoRemove}, bNewLinkedHideIfParameterMissing:=True) + ucrPnlStringHandling.AddToLinkedControls({ucrInputPattern, ucrChkIgnoreCase}, {rdoDetect, rdoToNa, rdoFind, rdoReplace, rdoRemove}, bNewLinkedHideIfParameterMissing:=True) ucrPnlStringHandling.AddToLinkedControls(ucrChkBoundary, {rdoDetect, rdoFind}, bNewLinkedHideIfParameterMissing:=True) ucrPnlStringHandling.AddToLinkedControls(ucrPnlDetectOptions, {rdoDetect}, bNewLinkedHideIfParameterMissing:=True) ucrPnlStringHandling.AddToLinkedControls(ucrPnlFindOptions, {rdoFind}, bNewLinkedHideIfParameterMissing:=True) @@ -182,9 +185,10 @@ Public Class dlgStringHandling clsReplaceCellFunction = New RFunction clsAsDataFrameFunction = New RFunction clsMutateFunction = New RFunction + clsNaIfFunction = New RFunction clsPipeOperator = New ROperator clsReplaceGrepFunction = New RFunction - + clsStrToLowerFunction = New RFunction ucrSelectorStringHandling.Reset() ucrInputReplaceBy.Reset() @@ -267,6 +271,12 @@ Public Class dlgStringHandling clsPipeOperator.AddParameter("x", "df", iPosition:=0, bIncludeArgumentName:=False) clsPipeOperator.AddParameter("y", clsRFunctionParameter:=clsMutateFunction, iPosition:=1) + clsNaIfFunction.SetPackageName("dplyr") + clsNaIfFunction.SetRCommand("na_if") + + clsStrToLowerFunction.SetPackageName("stringr") + clsStrToLowerFunction.SetRCommand("str_to_lower") + clsDetectFunction.SetAssignTo(ucrSaveStringHandling.GetText, strTempDataframe:=ucrSelectorStringHandling.ucrAvailableDataFrames.cboAvailableDataFrames.Text, strTempColumn:=ucrSaveStringHandling.GetText, bAssignToIsPrefix:=True) ucrBase.clsRsyntax.SetBaseRFunction(clsDetectFunction) NewColumnName() @@ -313,6 +323,7 @@ Public Class dlgStringHandling ucrSaveStringHandling.AddAdditionalRCode(clsMatchAllFunction, iAdditionalPairNo:=12) ucrSaveStringHandling.AddAdditionalRCode(clsRemoveAllFunction, iAdditionalPairNo:=13) ucrSaveStringHandling.AddAdditionalRCode(clsPipeOperator, iAdditionalPairNo:=14) + ucrSaveStringHandling.AddAdditionalRCode(clsNaIfFunction, iAdditionalPairNo:=15) ucrReceiverStringHandling.SetRCode(clsDetectFunction, bReset) ucrInputReplaceBy.SetRCode(clsReplaceAllFunction, bReset) @@ -333,7 +344,7 @@ Public Class dlgStringHandling End Sub Private Sub TestOkEnabled() - If (rdoDetect.Checked OrElse rdoFind.Checked OrElse rdoReplace.Checked OrElse rdoRemove.Checked) AndAlso ucrSaveStringHandling.IsComplete() AndAlso Not ucrReceiverStringHandling.IsEmpty() Then + If (rdoDetect.Checked OrElse rdoFind.Checked OrElse rdoReplace.Checked OrElse rdoRemove.Checked OrElse rdoToNa.Checked) AndAlso ucrSaveStringHandling.IsComplete() AndAlso Not ucrReceiverStringHandling.IsEmpty() Then ucrBase.OKEnabled(True) ElseIf rdoReplaceNa.Checked AndAlso ucrSaveStringHandling.IsComplete() Then ucrBase.OKEnabled(True) @@ -359,6 +370,7 @@ Public Class dlgStringHandling Private Sub AddRemoveParameters() clsStringCollFunction.AddParameter("pattern", Chr(34) & ucrInputPattern.GetText & Chr(34), bIncludeArgumentName:=False, iPosition:=1) clsRegexFunction.AddParameter("pattern", Chr(34) & ucrInputPattern.GetText & Chr(34), bIncludeArgumentName:=False, iPosition:=1) + clsNaIfFunction.AddParameter("pattern", Chr(34) & ucrInputPattern.GetText & Chr(34), bIncludeArgumentName:=False, iPosition:=1) If ucrChkIncludeRegularExpressions.Checked Then clsCountFunction.AddParameter("pattern", clsRFunctionParameter:=clsRegexFunction, bIncludeArgumentName:=False, iPosition:=1) clsRemoveFunction.AddParameter("pattern", clsRFunctionParameter:=clsRegexFunction, bIncludeArgumentName:=False, iPosition:=1) @@ -446,6 +458,9 @@ Public Class dlgStringHandling ucrBase.clsRsyntax.SetBaseRFunction(clsReplaceNaFunction) ucrSaveStringHandling.SetPrefix("replace_na") clsFindDummyFunction.AddParameter("string_handling", "replace_na", iPosition:=3) + ElseIf rdoToNa.Checked Then + ucrBase.clsRsyntax.SetBaseRFunction(clsNaIfFunction) + ucrSaveStringHandling.SetPrefix("replace") ElseIf rdoRemove.Checked Then If ucrChkRemoveAll.Checked Then ucrBase.clsRsyntax.SetBaseRFunction(clsRemoveAllFunction) @@ -461,6 +476,7 @@ Public Class dlgStringHandling AddRemoveParameters() CellParameters() RegularExpressionControl() + IgnoreCaseControl() End Sub Private Sub ChangePrefixName() @@ -526,4 +542,31 @@ Public Class dlgStringHandling clsFindDummyFunction.AddParameter("replace", "replace", iPosition:=2) End If End Sub + + Private Sub IgnoreCaseControl() + clsCurrentNewColumnFunction = ucrReceiverStringHandling.GetVariables() + clsCurrentNewColumnFunction.SetAssignTo("columns") + If rdoToNa.Checked Then + If ucrChkIgnoreCase.Checked Then + clsStrToLowerFunction.AddParameter("var1", clsRFunctionParameter:=clsCurrentNewColumnFunction, bIncludeArgumentName:=False, iPosition:=0) + clsNaIfFunction.AddParameter("string", clsRFunctionParameter:=clsStrToLowerFunction, bIncludeArgumentName:=False, iPosition:=0) + clsNaIfFunction.RemoveParameterByName("var2") + Else + clsNaIfFunction.AddParameter("var2", clsRFunctionParameter:=clsCurrentNewColumnFunction, bIncludeArgumentName:=False, iPosition:=0) + clsStrToLowerFunction.RemoveParameterByName("var1") + clsNaIfFunction.RemoveParameterByName("string") + End If + Else + clsStrToLowerFunction.RemoveParameterByName("var1") + clsNaIfFunction.RemoveParameterByName("string") + End If + End Sub + + Private Sub ucrReceiverStringHandling_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrReceiverStringHandling.ControlValueChanged + IgnoreCaseControl() + End Sub + + Private Sub ucrChkIgnoreCase_ControlValueChanged(ucrChangedControl As ucrCore) Handles ucrChkIgnoreCase.ControlValueChanged + IgnoreCaseControl() + End Sub End Class \ No newline at end of file diff --git a/instat/translations/rInstatTranslations.db b/instat/translations/rInstatTranslations.db index 208404f14e..7a5bfeec61 100644 Binary files a/instat/translations/rInstatTranslations.db and b/instat/translations/rInstatTranslations.db differ