代码之家  ›  专栏  ›  技术社区  ›  Chris T.

根据两列之间的匹配替换行中的id号

  •  -1
  • Chris T.  · 技术社区  · 7 年前

    row 代表一个社团在10个学生社团中的一个,以及 length 非空的 column 代表该俱乐部的会员人数。数据帧的每个非空单元格都填充一个“随机数”,表示学生在社团中的成员身份(随机数用于抑制其身份)。

    club_id	mem1	mem2	mem3	mem4	mem5	mem6	mem7
    1	      339	   520	 58				
    2	      700						
    3	       80	   434					
    4	      516	   811	471				
    5	       20						
    6	      211	    80	439	   516	 305		

    我想根据分配给他们的随机数和他们的学生ID之间的匹配,用学生ID替换这些随机数(不暴露他们的真实姓名);但是,只有部分学生ID与分配给这些学生的随机数匹配。

    here 看起来像

    match <- read.csv("https://www.dropbox.com/s/nc98i784r91ugin/match.csv?dl=1")
    
    head(match)
      id  rn
    1  1 700
    2  2 339
    3  3 540
    4  4  58
    5  5 160
    6  6 371

    where列 rm 表示随机数。

    所以我有困难的任务是 (1) 将数据帧上的随机数与相应的学生ID进行匹配和替换 (2) 将那些不匹配的随机数设置为 NA

    如果有人能在这方面给我启发,我将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  1
  •   einGlasRotwein    7 年前

    club2 <- data.frame(club_id = 1:6, mem2 = c(1000, 700, 80, 516, 20, 211))
    
    match <- read.csv("https://www.dropbox.com/s/nc98i784r91ugin/match.csv?dl=1")
    

    那么,对于专栏 mem2 ,我检查它是否存在于 match$rn . 如果不是这样,则插入NA。如果是这样的话,它会插入 match$id -在那个位置的那个 匹配$rn 内存2

    club2$mem2 <- ifelse(club2$mem2 %in% match$rn == TRUE, match$id[match(club2$mem2, match$rn)], NA)
    
    推荐文章