Замена цифр на буквы в датафрейме в r - PullRequest
0 голосов
/ 05 марта 2020

Так что в основном у меня есть столбец во фрейме данных, например:

df <- data.frame(well = c("0","1",NA,"1","1","2","2","3","4","3"))

Я просто хочу создать новый столбец, заменив «0» на «A», «1» на «B», ..., от "7" до "H". Я пытался это безуспешно:

lxn <-  data.frame(old_name = c(0,1,2,3,4,5,6,7), 
               new_name = c("A","B","C","D","E","F","G","H"))
map <- lxn$new_name
names(map) <- lxn$old_name
df <- df %>% mutate(well_l = ifelse(well %in% names(map), 
                     map[well], 
                     well)) 

Если вы попробуете это, вы увидите, что на самом деле это номер скважины + 1. Я не знаю, почему я не получаю буквы (new_name) и не получаю количество колодцев + 1.

Надеюсь, кто-нибудь может мне помочь.

Ответы [ 2 ]

3 голосов
/ 05 марта 2020

Вы можете использовать встроенную константу LETTERS.

df <- transform(df, let=LETTERS[well])
df
#    well  let
# 1     0    A
# 2     1    B
# 3  <NA> <NA>
# 4     1    B
# 5     1    B
# 6     2    C
# 7     2    C
# 8     3    D
# 9     4    E
# 10    3    D
1 голос
/ 05 марта 2020

Нет л oop требуется:

df <- data.frame(well = c("0","1",NA,"1","1","2","2","3","4","3"))

lxn <-  data.frame(old_name = c(0,1,2,3,4,5,6,7), 
                   new_name = c("A","B","C","D","E","F","G","H"))

df %>%
  mutate(well = set_names(lxn$new_name, lxn$old_name)[well])

# well
# 1     A
# 2     B
# 3  <NA>
#   4     B
# 5     B
# 6     C
# 7     C
# 8     D
# 9     E
# 10    D
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...