我有一个数据框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功能-还是有更好的方法来实现我的新专栏?
由于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)
您可以尝试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))
| 归档时间: |
|
| 查看次数: |
8731 次 |
| 最近记录: |