У меня есть два набора данных, один из которых имеет все числовые значения, а другой имеет преобразование:
Это пример живого набора данных, в нем более 2 столбцов, но в данном случае 191 - это США
Это пример набора данных для преобразования.Обратите внимание, что иногда длина столбцов различна.Например, страна имеет 200 элементов, а этническая принадлежность - 6.
Как мне написать код, который изменит значение в countryofbirth на US - 191преобразован в США?Исходный набор данных называется my_data, а конверсионный набор данных - Coversion.
I have tried left_joins,
my_data <- left_join(my_data, select(Conversion, c("StateGrewUpIn", "State")), by = "StateGrewUpIn")
I have tried merge:
my_data <- merge(x = my_data, y = Conversion[ , c("StateGrewUpIn", "State")], by = "StateGrewUpIn", all.x=TRUE)
Кажется, ничего не работает, оно всегда дублирует строки, превышающие максимум в исходном наборе данных.Другими словами, вместо того, чтобы просто выполнить чистое vlookup, он дублирует строки или включает строки из набора данных преобразования.
Conversion Dataset
> str(Conversion)
'data.frame': 200 obs. of 20 variables:
$ Religion : int 1 2 3 4 5 6 7 8 NA NA ...
$ Rel : chr "Protestant" "Catholic" "Islam" "Judaism" ...
$ PoliticalView : int 1 2 3 4 5 6 7 NA NA NA ...
$ Political_views : chr "Very Progressive/Left-wing" "Progressive/Left-wing" "Somewhat Progressive/Left-wing" "Moderate/Centrist" ...
$ CountryofBirth : int 1 2 3 4 5 6 7 8 9 10 ...
$ Country : chr "Afghanistan" "Albania" "Algeria" "Andorra" ...
$ Citizenship : int 1 2 3 4 5 6 7 8 9 10 ...
$ Citizen : chr "Afghanistan" "Albania" "Algeria" "Andorra" ...
$ StateGrewUpIn : int 1 2 3 4 5 6 7 8 9 10 ...
$ State : chr "Alaska (AK)" "American Samoa (AS)" "Arizona (AZ)" "Arkansas (AR)" ...
$ Ethnicity : int 1 2 3 4 5 6 NA NA NA NA ...
$ Ethnic : chr "White" "Asian" "Latino" "Black" ...
$ Education : int 1 2 3 4 5 6 NA NA NA NA ...
$ Education_level : chr "Some high school/secondary school" "High school degree/completed secondary school" "Some university" "University degree" ...
$ YearlyIncome : int 1 2 3 4 5 6 7 NA NA NA ...
$ Income : chr "Less than $10,000 USD a year" "USD $10,000-$20,000" "USD $20,000-$40,000" "USD USD $40,000-$60,000" ...
$ HighestEducationPar : int 1 2 3 4 5 6 NA NA NA NA ...
$ Parent_Highest_Education: chr "Some high school/secondary school" "High school degree/completed secondary school" "Some university" "University degree" ...
$ Atten_check_ans_1 : int 1 2 3 4 5 NA NA NA NA NA ...
$ Attention_Check : chr "strongly disagree" "moderately disagree" "neither disagree nor agree" "moderately agree" ...
Example of large dataset (note it has >200 columns so I just took the mentioned example above).
> str(my_data)
'data.frame': 35 obs. of 228 variables:
$ Citizenship : chr "144" "191" "191" "191" ...
$ CountryofBirth : chr "144" "191" "191" "191" ...
$ StartDate : chr "2019-05-17 13:49:35" "2019-05-17 12:54:30" "2019-05-17 12:54:40" "2019-05-17 12:54:20" ...
$ EndDate : chr "2019-05-17 14:00:12" "2019-05-17 13:00:21" "2019-05-17 13:02:02" "2019-05-17 13:04:25" ...
$ Status : chr "0" "0" "0" "0" ...