首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对R中一列中的标识符的多个实例进行求和和计数

对R中一列中的标识符的多个实例进行求和和计数
EN

Stack Overflow用户
提问于 2018-06-27 05:15:33
回答 1查看 36关注 0票数 0

我有一个简单的数据框架,如下所示。

代码语言:javascript
复制
table1 <- setNames(data.frame(matrix(ncol = 3, nrow = 0)), c("ID","Gender","Smoke"))

table1[1,]=c("1","M","N")
table1[2,]=c("1","F","N")
table1[3,]=c("2","M","N")
table1[4,]=c("2","F","S")
table1[5,]=c("1","M","N")
table1[6,]=c("1","F","N")

  ID Gender Smoke
1  1      M     N
2  1      F     N
3  2      M     N
4  2      F     S
5  1      M     N
6  1      F     N

我想增加两个栏目。第一列将是列1中的ID出现的实例数。在本例中,ID "1“出现4次,ID "2”出现2次,因此我希望它在第1:2行显示4,在第3:4行显示5:6。

我想让第二列准确地表示行中出现的特定ID的实例。因此,行1是"1“的第一个实例,因此它被指定为1,而行2是"1”的第二个实例,因此它将被指定为2。行3是"2“的第一个实例,因此它被指定为1,同样,第4行为2,第5行为3,第6行为4。

最后,该表将如下所示:

代码语言:javascript
复制
  ID Gender Smoke IDTotal IDCount
1  1      M     N       4       1
2  1      F     N       4       2
3  2      M     N       2       1
4  2      F     S       2       2
5  1      M     N       4       3
6  1      F     N       4       4
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-27 05:20:50

使用data.table

代码语言:javascript
复制
df <- read.table(text = "ID Gender Smoke
1  1      M     N
                 2  1      F     N
                 3  2      M     N
                 4  2      F     S
                 5  1      M     N
                 6  1      F     N", header = T)

library(data.table)
setDT(df)
df[, IDTotal := .N, by = ID]
df[, IDCount := 1:.N, by = ID]

    ID Gender Smoke IDTotal IDCount
1:  1      M     N       4       1
2:  1      F     N       4       2
3:  2      M     N       2       1
4:  2      F     S       2       2
5:  1      M     N       4       3
6:  1      F     N       4       4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51051465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档