我正在使用R,我正在尝试创建一个新列" c"序列取决于列的长度" a"要素水平。我有一个例子前后的例子。我在创建""之后遇到了麻烦。表。有人可以帮忙吗?
BEFORE
a b
1 hi
1 hello
1 howdy
1 hola
2 world
2 world
3 something
3 someone
AFTER
a b c
1 hi 1
1 hello 2
1 howdy 3
1 hola 4
2 world 1
2 world 2
3 something 1
3 someone 2
答案 0 :(得分:3)
这是dplyr
解决方案
library(dplyr)
df %>%
group_by(a) %>%
mutate(c = seq(a))
a b c
1 1 hi 1
2 1 hello 2
3 1 howdy 3
4 1 hola 4
5 2 world 1
6 2 world 2
7 3 something 1
8 3 someone 2
或data.table
library(data.table)
dt <- as.data.table(df)
dt[, c := seq(.N), by=a]
答案 1 :(得分:3)
您可以在base R
df1$c <- with(df1, ave(seq_along(a), a, FUN=seq_along))
或者
library(splitstackshape)
getanID(df1, 'a')[]