Лучший способ отобразить данные в столбец в кадре данных? - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть несколько больших фреймов данных, которые мне нужно объединить, и иногда я добавляю уникальный идентифицируемый столбец для их объединения.Я использую этот подход, который работает, но, кажется, занимает много времени.В основном, используя dplyr, я получаю distinct возврат переменной, затем mutate новую переменную для каждой, затем merge эту переменную обратно в исходный кадр данных.Есть ли лучший способ сделать это?

df <- tibble(
  x = rep(LETTERS, 10)
)


df %>% 
  distinct(x) %>% 
  mutate(y = 1:nrow(.)) %>% 
  right_join(df)

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Поскольку вы не указали, нужен ли вам dplyr, вот подход data.table:

setDT(df)[, y := .GRP, by=x]

или в базе R, просто

df$y = as.integer(factor(df$x))
0 голосов
/ 12 декабря 2018

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

library(dplyr)
df %>% 
    mutate(y = match(x, unique(x)))

или с factor

df %>% 
    mutate(y = as.integer(factor(x, levels = unique(x))))

Или с group_indices

df %>%
   mutate(y = group_indices(., x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...