У меня есть данные о заработной плате, и около 95% из них приведены в почасовом формате, однако некоторые из них приведены в виде годовой заработной платы. Поэтому я сделал функцию для преобразования годовой заработной платы в почасовую, однако это занимает 1 минуту 40 секунд, когда мой набор данных составляет 43000 строк x 12 столбцов (что, я не думал, будет слишком большим), поэтому я не думал, что это займет это долго
Мне любопытно, есть ли лучший способ сделать это, чем текущая функция, которую я создал. Я новичок в dplyr и tidyverse, так что в идеале я отвечу, используя эти возможности.
Вот некоторые примеры данных:
NOC4 Region Region_Name Wage_2012 Wage_2013 Wage_2014
0011 ER10 National 28.1 65000 NA
0011 ER1010 Northern NA 30.5 18
0011 ER1020 Southern 42.3 72000 22
0011 ER1030 Eastern 12 NA 45500
0011 ER1040 Western 8 NA 99000
0011 ER10 National NA 65000 NA
Вот как это должно выглядеть после функции:
NOC4 Region Region_Name Wage_2012 Wage_2013 Wage_2014
0011 ER10 National 28.1 33.33 NA
0011 ER1010 Northern NA 30.5 18
0011 ER1020 Southern 42.3 36.92 22
0011 ER1030 Eastern 12 NA 23.33
0011 ER1040 Western 8 NA 50.77
0011 ER10 National NA 33.33 NA
Вот функция:
year_to_hour <- function(dataset, salary, startcol){
# where "startcol" should be the first column containing the numeric
# values that you are trying to convert.
for(i in startcol:ncol(dataset)){
for(j in 1:nrow(dataset)){
if(is.na(dataset[j, i])){
j = j+1
}else if(as.numeric(dataset[j, i]) >= as.numeric(salary)){
dataset[j, i] = dataset[j, i]/1950
}
else{
dataset[j, i] = dataset[j, i]
}
}
}
return(as_tibble(dataset))
}
converted <- year_to_hour(wage_data_messy, 1000, 4)