添加具有其他计数的列

whi*_*ler 2 r

我有一个数据框df,看起来像以下内容,其中gender列是一个factor具有两个级别的:

gender    age
m         18
f         14
m         18
m         18
m         15
f         15
Run Code Online (Sandbox Code Playgroud)

我想添加一个新列count,该列仅反映该gender级别在数据框中出现的次数。因此,最终,数据框将如下所示:

gender    age    count
m         18     4
f         14     2
m         18     4
m         18     4
m         15     4
f         15     2
Run Code Online (Sandbox Code Playgroud)

我知道我可以做得到table(df$gender)该因子出现的次数,但是我不知道如何将这些结果转换为中的新列df。我想知道如何使用该table功能-还是有更好的方法来实现我的新专栏?

flo*_*del 7

由于gender是一个因素,您可以使用它来索引table输出:

dat$count <- table(dat$gender)[dat$gender]
Run Code Online (Sandbox Code Playgroud)

或者避免重复dat$太多次:

dat <- transform(dat, count = table(gender)[gender])
Run Code Online (Sandbox Code Playgroud)


Hen*_*rik 5

您可以尝试ave

# first, convert 'gender' to class character
df$gender <- as.character(df$gender)

df$count <- as.numeric(ave(df$gender, df$gender, FUN = length))
df
#   gender age count
# 1      m  18     4
# 2      f  14     2
# 3      m  18     4
# 4      m  18     4
# 5      m  15     4
# 6      f  15     2
Run Code Online (Sandbox Code Playgroud)

更新@flodel的评论-谢谢!

df <- transform(df, count = ave(age, gender, FUN = length))