2016-11-30 30 views
0

一個問題的三個列表創建R中的唯一ID由學生連接字符串

我們如何創建一個獨特的I R中會

例如,如果我們有數據集,其中有3個變量州,地區和村莊。

,我需要創建我倒是獨特的,如果有某小區3村,無需狀態是6則需要創建獨特的我想是6 * 3 = 18

爲例abc_1_1, abc_1_2,abc_1_3,abc_2_1,abc_2_2,abc_2_3 ..等等。

示例

假設東德里是一個地區,有3個村莊。所以產出應該是東delhi_1_1,東delhi_1_2,東delhi_1_3爲一個村莊,其他村莊等等,我應該創建總計18個。

+2

請添加示例數據和預期輸出而不是描述。 – mtoto

+1

'unique()'數據集和'paste()'與'sep ='_''在一起的狀態,地區和村莊?添加了 – janosdivenyi

+0

。獨特是獲得所有可能組合的好方法 –

回答

0

我的答案在這裏,但如果有更優雅的方式,我期待着它

http://rpubs.com/newajay/uniqueidsfrom3strings

states=c("UP","MP","Raj","Maha") 
districts=c("North","West","East","South") 
villages=c("1","2","3","4") 
newlist=NULL 
for (i in 1:length(states)){ 
    newlist=c(newlist,paste(states[i],"_",districts)) 
} 
newlist=gsub(" ","",newlist) 
newlist 
[1] "UP_North" "UP_West" "UP_East" "UP_South" "MP_North" 
[6] "MP_West" "MP_East" "MP_South" "Raj_North" "Raj_West" 
[11] "Raj_East" "Raj_South" "Maha_North" "Maha_West" "Maha_East" 
[16] "Maha_South" 
for (i in 1:length(newlist)){ 
    newlist=c(newlist,paste(newlist[i],"_",villages)) 
} 
newlist 
[1] "UP_North"  "UP_West"  "UP_East"  "UP_South"  
[5] "MP_North"  "MP_West"  "MP_East"  "MP_South"  
[9] "Raj_North"  "Raj_West"  "Raj_East"  "Raj_South"  
[13] "Maha_North"  "Maha_West"  "Maha_East"  "Maha_South"  
[17] "UP_North _ 1" "UP_North _ 2" "UP_North _ 3" "UP_North _ 4" 
[21] "UP_West _ 1" "UP_West _ 2" "UP_West _ 3" "UP_West _ 4" 
[25] "UP_East _ 1" "UP_East _ 2" "UP_East _ 3" "UP_East _ 4" 
[29] "UP_South _ 1" "UP_South _ 2" "UP_South _ 3" "UP_South _ 4" 
[33] "MP_North _ 1" "MP_North _ 2" "MP_North _ 3" "MP_North _ 4" 
[37] "MP_West _ 1" "MP_West _ 2" "MP_West _ 3" "MP_West _ 4" 
[41] "MP_East _ 1" "MP_East _ 2" "MP_East _ 3" "MP_East _ 4" 
[45] "MP_South _ 1" "MP_South _ 2" "MP_South _ 3" "MP_South _ 4" 
[49] "Raj_North _ 1" "Raj_North _ 2" "Raj_North _ 3" "Raj_North _ 4" 
[53] "Raj_West _ 1" "Raj_West _ 2" "Raj_West _ 3" "Raj_West _ 4" 
[57] "Raj_East _ 1" "Raj_East _ 2" "Raj_East _ 3" "Raj_East _ 4" 
[61] "Raj_South _ 1" "Raj_South _ 2" "Raj_South _ 3" "Raj_South _ 4" 
[65] "Maha_North _ 1" "Maha_North _ 2" "Maha_North _ 3" "Maha_North _ 4" 
[69] "Maha_West _ 1" "Maha_West _ 2" "Maha_West _ 3" "Maha_West _ 4" 
[73] "Maha_East _ 1" "Maha_East _ 2" "Maha_East _ 3" "Maha_East _ 4" 
[77] "Maha_South _ 1" "Maha_South _ 2" "Maha_South _ 3" "Maha_South _ 4" 
newlist=gsub(" ","",newlist) 
newlist 
[1] "UP_North"  "UP_West"  "UP_East"  "UP_South"  
[5] "MP_North"  "MP_West"  "MP_East"  "MP_South"  
[9] "Raj_North" "Raj_West"  "Raj_East"  "Raj_South" 
[13] "Maha_North" "Maha_West" "Maha_East" "Maha_South" 
[17] "UP_North_1" "UP_North_2" "UP_North_3" "UP_North_4" 
[21] "UP_West_1" "UP_West_2" "UP_West_3" "UP_West_4" 
[25] "UP_East_1" "UP_East_2" "UP_East_3" "UP_East_4" 
[29] "UP_South_1" "UP_South_2" "UP_South_3" "UP_South_4" 
[33] "MP_North_1" "MP_North_2" "MP_North_3" "MP_North_4" 
[37] "MP_West_1" "MP_West_2" "MP_West_3" "MP_West_4" 
[41] "MP_East_1" "MP_East_2" "MP_East_3" "MP_East_4" 
[45] "MP_South_1" "MP_South_2" "MP_South_3" "MP_South_4" 
[49] "Raj_North_1" "Raj_North_2" "Raj_North_3" "Raj_North_4" 
[53] "Raj_West_1" "Raj_West_2" "Raj_West_3" "Raj_West_4" 
[57] "Raj_East_1" "Raj_East_2" "Raj_East_3" "Raj_East_4" 
[61] "Raj_South_1" "Raj_South_2" "Raj_South_3" "Raj_South_4" 
[65] "Maha_North_1" "Maha_North_2" "Maha_North_3" "Maha_North_4" 
[69] "Maha_West_1" "Maha_West_2" "Maha_West_3" "Maha_West_4" 
[73] "Maha_East_1" "Maha_East_2" "Maha_East_3" "Maha_East_4" 
[77] "Maha_South_1" "Maha_South_2" "Maha_South_3" "Maha_South_4" 
1

這是你在找什麼?

states=c("UP","MP") 
districts=c("North","South") 
villages=c("1","2") 
df <- data.frame(states = states, districts = districts, villages= villages) 
df1 <- expand.grid(df) 
#df1 
# states districts villages 
#1  UP  North  1 
#2  MP  North  1 
#3  UP  South  1 
#4  MP  South  1 
#5  UP  North  2 
#6  MP  North  2 
#7  UP  South  2 
#8  MP  South  2 

library(tidyr) 
unite(df1, new_col,states, districts, villages,sep="_") 
#  new_col 
#1 UP_North_1 
#2 MP_North_1 
#3 UP_South_1 
#4 MP_South_1 
#5 UP_North_2 
#6 MP_North_2 
#7 UP_South_2 
#8 MP_South_2 
3

我認爲你可以使用這個。

sapply(states, function(x) paste0(x, districts)) 

    UP  MP  Raj  Maha  
[1,] "UPNorth" "MPNorth" "RajNorth" "MahaNorth" 
[2,] "UPWest" "MPWest" "RajWest" "MahaWest" 
[3,] "UPEast" "MPEast" "RajEast" "MahaEast" 
[4,] "UPSouth" "MPSouth" "RajSouth" "MahaSouth"