根据R中另一列的ID在一列中分配ID

根据R中另一列的ID在一列中分配ID,r,dataframe,dplyr,tidyverse,R,Dataframe,Dplyr,Tidyverse,我首先根据第1列分配了一个唯一的id 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

我首先根据第1列分配了一个唯一的id

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

如果再次得到答复,我很抱歉。我一直在努力寻找一个漂亮的解决方案。感谢您抽出时间

您可以使用
因子
,如下所示:

 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>
transform(df,id.2=因子(column2,unique(column1),unique(id.1)))
第1列id.1第2列id.2
1 A 1 C 3
2 A 1 B 2
3b2b2
4 C 3 A 1
5C3D

匹配是执行此操作的常用方法:

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)

谢谢@Gregor简洁快速的回答谢谢@Onyanbu的帮助。我非常感谢