我有长格式的纵向数据。我想基于变量列创建一个ID变量,用于标识我的数据的每个观察。我如何在R?中做到这一点?
示例:我有这个数据
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
我想生成一个名为'id'的新列,每个名称都有一个唯一的编号,例如:
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
有任何帮助吗?
答案 0 :(得分:4)
如果您的name
列不仅包含单个字母(或者即使它包含),您也可以使用:
dat$id <- as.numeric(as.factor(dat$name))
或更简单地说:
dat$id <- c(as.factor(dat$name))
其中dat
是您的data.frame
。
答案 1 :(得分: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)
虽然不清楚name是列还是数据框的rownames。
如果不是列,请尝试rownames(df)
而不是df$name