Назначьте идентификатор в одном столбце на основе идентификатора в другом столбце в R - PullRequest
0 голосов
/ 05 августа 2020

Сначала я назначил уникальный идентификатор на основе столбца 1

column1   id.1 column2 
   A      1      C
   A      1      B
   B      2      B
   C      3      A
   C      3      D

, и я хотел бы выделить значения id.1 в столбец 2

column1   id.1 column2  id.2
   A      1      C        3
   A      1      B        2
   B      2      B        2
   C      3      A        1
   C      3      D        NA

Прошу прощения, если это был дан ответ снова. Я долго пытаюсь найти красивое решение по этому поводу. Спасибо за ваше время

Ответы [ 2 ]

1 голос
/ 05 августа 2020

match - это обычный способ сделать это:

df$id.2 = df$id.1[match(df$column2, df$column1)]
df
#   column1 id.1 column2 id.2
# 1       A    1       C    3
# 2       A    1       B    2
# 3       B    2       B    2
# 4       C    3       A    1
# 5       C    3       D   NA

Или используя синтаксис dplyr:

mutate(df, id.2 = id.1[match(column2, column1)])

Используя эти данные:

df = read.table(text = 'column1   id.1 column2 
    A      1      C
    A      1      B
    B      2      B
    C      3      A
    C      3      D', header = T)
0 голосов
/ 05 августа 2020

вы можете использовать factor, как показано ниже:

 transform(df, id.2 = factor(column2, unique(column1), unique(id.1)))
  column1 id.1 column2 id.2
1       A    1       C    3
2       A    1       B    2
3       B    2       B    2
4       C    3       A    1
5       C    3       D <NA>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...