我有一个有大坝,陛下和其他变量的数据集,但我需要重新编码我的大坝和父亲id。坝柱被分类,每只动物只有一次。另一方面,父系专栏未分类,一些动物出现不止一次。
我想从50,000开始编号,这样第一只动物将获得50001,第二只动物获得50002等等。我有这个脚本,从1到N对每个大坝进行编号,并想知道它是否可以修改为从50,000开始。
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)
对于sire列,我想从10,000开始编号。
非常感谢任何帮助。
巴兹
答案 0 :(得分:1)
目前,那些sire和dam列是因子变量,但在这种情况下,这意味着您只需将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
答案 1 :(得分:0)
为什么不使用:
names(mydf$dam2) <- 50000:whatEverYourLengthIs
我不确定我是否完全理解你的数据结构,但通常使用names-function来设置名称。
编辑:
您可以使用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