использовать значения из столбца в качестве индекса для извлечения значения из другого столбца в R - PullRequest
1 голос
/ 03 февраля 2020

Предположим, у меня есть этот фрейм данных df:

df <- data_frame(A = c(1:10), B = c(21:30), C = c(NA, NA, NA, 1, 8, 3, NA, 4, 7, 3)) 

       A     B     C
   <int> <int> <dbl>
 1     1    21    NA
 2     2    22    NA
 3     3    23    NA
 4     4    24     1
 5     5    25     8
 6     6    26     3
 7     7    27    NA
 8     8    28     4
 9     9    29     7
10    10    30     3

Я хочу использовать значения не-NA в столбце C в качестве индекса для извлечения значений в столбце B для создания нового столбца D Полученный кадр данных должен выглядеть следующим образом:

      A     B     C     D
   <int> <int> <dbl> <dbl>
 1     1    21    NA    NA
 2     2    22    NA    NA
 3     3    23    NA    NA
 4     4    24     1    21
 5     5    25     8    28
 6     6    26     3    23
 7     7    27    NA    NA
 8     8    28     4    24
 9     9    29     7    27
10    10    30     3    23

Я пробовал df %>% mutate(D = df[C,]) и df %>% mutate(D = df[C,B]), но оба кода не дают желаемого результата. Спасибо!

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Вам нужно индексировать B, используя C

transform(df, D = B[C])

или dplyr

library(dplyr)
df %>% mutate(D = B[C])

# A tibble: 10 x 4
#       A     B     C     D
#   <int> <int> <dbl> <int>
# 1     1    21    NA    NA
# 2     2    22    NA    NA
# 3     3    23    NA    NA
# 4     4    24     1    21
# 5     5    25     8    28
# 6     6    26     3    23
# 7     7    27    NA    NA
# 8     8    28     4    24
# 9     9    29     7    27
#10    10    30     3    23
0 голосов
/ 03 февраля 2020

Мы можем использовать base R

df$D <- with(df, B[C])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...