我需要根据另一个表对数据帧的多列上的值进行重新编码。
我必须使用侧表重新编码数据表的多个列的值。
这些值对应于我必须用地名替换的地理标识符。
所以我决定做一个循环,但是循环之外有效的方法不再有效。
我无法在 for 循环中使用 mutate 。
我的真实数据包含 274 列,其中 38 列需要重新编码。该列有许多不同的名称(它们不是调用位置”)
我的主要数据集:
id <- c(1, 2, 3)
departure <- c(1, 2, NA)
arrival <- c(3, 1, 2)
transit <- c(NA,NA,1)
dataset <- data.frame(id, departure, arrival, transit)
另一张表:
geo_id <- c(1, 2, 3)
place_name <- c("Paris", "Nantes", "London")
geocode <- data.frame(geo_id, place_name)
我的循环:
var <- c("departure", "arrival", "transit") #the columns that should by recode (must be a vector with my real data)
for (i in var) {
print(i)
dataset <- dataset %>%
mutate(i = geocode$place_name[match(i, geocode$geo_id)])
}
mutate 创建一个新的列调用i
!如何避免这种情况?