2014-04-09 58 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