Замена целых чисел на месте именами факторов

#r #lookup #factors

#r #поиск #факторы

Вопрос:

Я хотел бы переименовать «уровни» в моих данных, используя поиск, содержащийся в отдельном фрейме данных. Например, со следующим:

 remove(list = ls())

id1 <- c(1002,1003,1003,1010,1002,1010)
id2 <- c(1002,1003,1004,1010,1004,1004)
data <- c(1,2,3,4,5,6)
df <- data.frame(cbind(id1,id2,data))

id <- c(1002,1003,1004,1010)
site <- c("site A","site B","site C","site D")
lookup <- data.frame(cbind(id,site))
lookup$id <- as.integer(as.character(lookup$id))
  

Я хотел бы получить:

      id1    id2 data
1 Site A Site A    1
2 Site B Site B    2
3 Site B Site C    3
4 Site D Site D    4
5 Site A Site C    5
6 Site D Site C    6
  

Спасибо.

Комментарии:

1. df[1:2] <- lapply(df[1:2], function(x) lookup$site[match(x, lookup$id)])

Ответ №1:

Мы могли бы использовать lapply и match столбцы

 df[1:2] <- lapply(df[1:2], function(x) lookup$site[match(x, lookup$id)])


df
#     id1    id2 data
#1 site A site A    1
#2 site B site B    2
#3 site B site C    3
#4 site D site D    4
#5 site A site C    5
#6 site D site C    6
  

Или даже лучше — unlist и match напрямую.

 df[1:2] <- lookup$site[match(unlist(df[1:2]), lookup$id)]