2012-02-15 73 views
5

我有一個長格式的縱向數據。我想創建一個基於變量列的ID變量來標識我的數據的每個觀察結果。我如何在R中做到這一點?如何在R中創建ID列

例子:我有這樣的數據

name year var1 var2 
A 1 4 3 
A 2 5 1 
A 3 4 2 
B 1 . . 
B 2 4 3 
B 3 5 1 

我想產生一種叫「身份證」與每個名稱的唯一號碼新列,如:

name id year var1 var2 
A 1 1 4 3 
A 1 2 5 1 
A 1 3 4 2 
B 2 1 . . 
B 2 2 4 3 
B 2 3 5 1 

任何幫助嗎?

回答

4

如果您name列不只是包含單個字母(或者即使它),你可以使用:

dat$id <- as.numeric(as.factor(dat$name)) 

,或者更簡單:

dat$id <- c(as.factor(dat$name)) 

其中dat是您的data.frame

1
tc=' 
name year var1 var2 
A 1 4 3 
A 2 5 1 
A 3 4 2 
B 1 . . 
B 2 4 3 
B 3 5 1' 

df <- read.table(text=tc, header=T) 

df$ID <- match(df$name, LETTERS) 

雖然不清楚名稱是列還是數據框的rownames。 如果不是列然後嘗試rownames(df)代替df$name

+0

我認爲'text = tc'應該替換爲'textConnection(tc)'。 – jbaums 2012-02-15 07:53:51

+0

@jbaums肯定爲什麼不。 – aatrujillob 2012-02-15 08:02:06

+0

@jbaums'text'是read.table的新參數,它有助於避免使用'textConnection'。如果你願意的話,切斷中間人。 – 2012-02-15 10:09:36