@@ -155,8 +155,22 @@ function stack(df::AbstractDataFrame,
155155 end
156156 N = length (ints_measure_vars)
157157 cnames = _names (df)[ints_id_vars]
158+
159+ if variable_name_s in cnames
160+ throw (ArgumentError (" Column name :$variable_name_s already exists in the " *
161+ " data frame. Pass `variable_name` keyword argument to " *
162+ " use a different name for the variable column." ))
163+ end
164+
165+ if value_name_s in cnames
166+ throw (ArgumentError (" Column name :$value_name_s already exists in the " *
167+ " data frame. Pass `value_name` keyword argument to " *
168+ " use a different name for the value column." ))
169+ end
170+
158171 push! (cnames, variable_name_s)
159172 push! (cnames, value_name_s)
173+
160174 if variable_eltype === Symbol
161175 catnms = PooledArray (_names (df)[ints_measure_vars])
162176 elseif variable_eltype === String
@@ -187,6 +201,18 @@ function _stackview(df::AbstractDataFrame, measure_vars::AbstractVector{Int},
187201 value_name:: Symbol , variable_eltype:: Type )
188202 N = length (measure_vars)
189203 cnames = _names (df)[ints_id_vars]
204+
205+ if variable_name in cnames
206+ throw (ArgumentError (" Column name :$variable_name already exists in the " *
207+ " data frame. Pass `variable_name` keyword argument to " *
208+ " use a different name for the variable column." ))
209+ end
210+ if value_name in cnames
211+ throw (ArgumentError (" Column name :$value_name already exists in the " *
212+ " data frame. Pass `value_name` keyword argument to " *
213+ " use a different name for the value column." ))
214+ end
215+
190216 push! (cnames, variable_name)
191217 push! (cnames, value_name)
192218 if variable_eltype === Symbol
0 commit comments