2014-04-09 32 views
1

我目前有包含姓名数据的两个表,我使用%in%创建一个新的二元变量,如果其中一个列表中的名字就太第二appers:功能从匹配打印字符串中的R

publications$IsTrainee = 1*(publications$AuthorLast %in% trainees$TraineeLast) 

我也想创建输出出现在两个列表中的字符串(名称)的新变量,但我在寻找一个可以让那就麻烦了。我查看了stringr包,但也许我错过了一些东西。太感谢了!

学员表:

TraineeNumber Program   LastName EntryDate 
    1    1  K12    LEE  2007 
    2    2  K12    PAN  2007 
    3    3  K12   SHAIKH  2007 
    4    4  K12  MINZENBERG  2007 
    5    5  K12   BREMER  2008 
    6    6  K12   UNDERWOOD  2008 
    7    7  K12   AVDALOVIC  2008 

项目表:

PubNum Publication_Year AuthorLast CoauthorLast1 CoauthorLast2 CoauthorLast3 
1  1    2007  ANUURAD   LU   RUBIN  PEARSON 
2  2    2006  BARRY  LOCKRIDGE  SALAMAT  TINLING 
3  3    2006  CARTER           
4  4    2006  CARTER   HAN  ABRESCH  JENSEN 
5  5    2006  CHUI   ZAROW   MACK   ELLIS 
6  6    2007 CRITCHFIELD LEMONGELLO  WALKER  GARCIA 

出版物$ IsTrainee:

[1] 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 
[41] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
[81] 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

所需的输出:

PubNum Publication_Year AuthorLast CoauthorLast1 CoauthorLast2 Trainee TraineeName 
1  1    2007  ANUURAD   LU   RUBIN  0 NA 
2  2    2006  BARRY  LOCKRIDGE  SALAMAT  1 BARRY 
3  3    2006  CARTER         1 CARTER  
4  4    2006  CARTER   HAN  ABRESCH  1 CARTER 
5  5    2006  CHUI   ZAROW   MACK  0 NA 
6  6    2007 CRITCHFIELD LEMONGELLO  WALKER  1 WALKER 
+0

请提供出版物和受训者的数据样本,并将所需的输出 –

+0

分配给变量,可以说'x'并提供输出,或者简单地提供'publications $ IsTrainee'? –

+0

我已经添加了出版物和学员的样本数据。期望的输出将是发布表+一个新的变量(列),如果相关的话,学员的姓名。 –

回答

1

您是否正在寻找简单的沿

names <- c("albert", "john", "louise") 
set <- c("louise", "james", "john") 
names[names %in% set] 

线的东西或者是你问其他的东西?

编辑回应评论:

什么ifelse(names %in% set, names, NA)

+0

真的很接近。我为上述问题添加了更多细节,包括我正在使用的表格。谢谢! –

+0

超级关闭:现在如何获得结果写入类似于以下内容的原始csv文件:'Publications $ TraineePub = 1 *(出版物$ AuthorLast%in%Trainees $ LastName)'和'write.csv(Publications,file ='结果出版物Trainee.csv')'@Adrian –

+0

我可能会误解你的问题......你问如何创建一个新的数据帧列,以及如何写入数据帧到CSV?如果是的话,你已经自己回答了:像'Publications $ MyNewVariable < - ifelse(出版物$ Names%in%some.set,出版物$ Names,NA)'做一些事情,然后调用'write.csv'。 – Adrian