假设我有:
df <- data.frame(x = rep(as.factor(LETTERS[1:3]), c(1, 2, 3)))
df:
x
1 A
2 B
3 B
4 C
5 C
6 C
如何根据df$x
上的相同字母添加其他列(组ID):
x group
1 A 1
2 B 2
3 B 2
4 C 3
5 C 3
6 C 3
谢谢!
------------- EDIT --------------
对不起,我想我应该重新解释一下我的问题。我们在这里:
df <- data.frame(x = rep(as.factor(LETTERS[1:3]), c(1, 2, 3)),
y = rep(as.factor(LETTERS[3:1]), c(3, 2, 1)))
df
x y
1 A C
2 B C
3 B C
4 C B
5 C B
6 C A
我需要一组分组ID来分隔x&amp;你对:
df
x y group
1 A C 1
2 B C 2
3 B C 2
4 C B 3
5 C B 3
6 C A 4
感谢您的帮助!
答案 0 :(得分:4)
我认为这就是你要找的东西:
df$group = df$x:df$y
# x y group
#1 A C A:C
#2 B C B:C
#3 B C B:C
#4 C B C:B
#5 C B C:B
#6 C A C:A
在这种情况下, group
是一个因素。如果您希望它具有数字ID:
df$group = as.numeric(df$x:df$y)
# x y group
#1 A C 3
#2 B C 6
#3 B C 6
#4 C B 8
#5 C B 8
#6 C A 7
ETA:如果您希望组ID是连续的整数:
df$group = match(df$x:df$y, unique(df$x:df$y))
# x y group
#1 A C 1
#2 B C 2
#3 B C 2
#4 C B 3
#5 C B 3
#6 C A 4
答案 1 :(得分:1)
这个怎么样:
df$group <- as.numeric(factor(with(df, paste(x,y))))
......与其他解决方案非常相似。