首页 > 解决方案 > 将数据映射到数据框中的列的更好方法?

问题描述

我有几个需要合并的大型数据框,有时会添加一个唯一可识别的列来合并它们。我使用这种可行的方法,但似乎需要很长时间。基本上,使用dplyr,我获取一个变量的distinct返回值,然后mutate为每个变量获取一个新变量,然后merge将该变量返回到原始数据帧。有没有更好的方法来实现这一点?

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


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

标签: rdplyr

解决方案


我们可以使用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))

推荐阅读