2011-09-07 124 views
0

我有水壩,陛下,加上其他變量的數據集,但我需要重新編寫我的大壩和陛下的ID。大壩欄目被分類,每隻動物只進行一次包裝。另一方面,父母欄是未分類的,一些動物出現不止一次。重新編碼,使用R

我想開始我的水壩編號50000,使得第一動物將得到50001,第二動物50002等。我有這個腳本可以將每個大壩從1到N編號,並想知道它是否可以修改爲從5萬開始。

mydf$dam2 <- as.numeric(factor(paste(mydf$dam,sep=""))) 

* EDITED 我的數據集與此類似,但更多的變數

dam <- c("1M521","1M584","1M790","1M871","1M888","1M933") 
sire <- c("1X057","1T456","1W865","1W209","1W209","1W648") 
wt <- c(369,300,332,351,303,314) 
p2 <- c(NA,16,18,NA,NA,15) 
mydf <- data.frame(dam,sire,wt,p2) 

對於陛下列,我想先從10000編號。

任何幫助將是非常讚賞。

巴茲

+0

@Andrie:謝謝! – baz

+3

NP。正如你所看到的,一點點的編輯可以讓你的問題更容易閱讀。要自己做到這一點,請使用編輯框中的{}'按鈕將代碼格式化爲代碼。您還可以使用反引號\'標記文本中的代碼位。 – Andrie

+0

@Andrie:我一直有這樣的問題,但對於尖端沒有任何更多....謝謝! – baz

回答

1

目前,這些父親和母親列因子變量,但在這種情況下,這意味着你可以添加as.numeric()結果您基數:

> mydf$dam_n <- 50000 +as.numeric(mydf$dam) 
> mydf$sire_n <- 10000 +as.numeric(mydf$sire) 
> mydf 
    dam sire wt p2 dam_n sire_n 
1 1M521 1X057 369 NA 50001 10005 
2 1M584 1T456 300 16 50002 10001 
3 1M790 1W865 332 18 50003 10004 
4 1M871 1W209 351 NA 50004 10002 
5 1M888 1W209 303 NA 50005 10002 
6 1M933 1W648 314 15 50006 10003 
+0

這正是我正在尋找的。很棒的工作,非常感謝你! – baz

0

爲什麼不使用:

names(mydf$dam2) <- 50000:whatEverYourLengthIs 

我不知道如果我理解你的數據結構完全地,但通常的名稱,功能是用來設置名稱。

編輯:

您可以使用dimnames來命名列和行。 像:

[,1] [,2] 
a 1 2 
b 4 5 
c 7 8 

dimnames(mymatrix) <- list(c("Jan", "Feb", "Mar"), c("2005", "2006")) 

產量

  2005  2006 
Jan   1  2 
Feb   4  5 
Mar   7  8 
+0

我剛剛編輯了我的問題,讓您瞭解我的數據結構。謝謝! – baz