用子组总计 (R) 填充列
Fill Down Column with SubGroup Totals (R)
我想获取子组中唯一值的数量,并创建一个列,其中包含由子组填充的唯一值数量。
我已经尝试过这段代码,但它并没有完全按照我希望的方式工作:
data$ones=1
data=transform(data,Count=ave(ones,UniqueID,FUN=sum))
数据是这样的:
Group UniqueID
Grp1 1-A
Grp1 1-B
Grp1 1-B
Grp1 1-C
Grp2 2-A
Grp2 2-A
Grp2 2-B
Grp3 3-A
Grp3 3-A
Grp3 3-A
这就是我想要的样子:
Group UniqueID Count
Grp1 1-A 3
Grp1 1-B 3
Grp1 1-B 3
Grp1 1-C 3
Grp2 2-A 2
Grp2 2-A 2
Grp2 2-B 2
Grp3 3-A 1
Grp3 3-A 1
Grp3 3-A 1
如有任何帮助,我们将不胜感激。
我们可以使用 dplyr
包中的 n_distinct
。
library(dplyr)
dat2 <- dat %>%
group_by(Group) %>%
mutate(Count = n_distinct(UniqueID)) %>%
ungroup()
dat2
# # A tibble: 10 x 3
# Group UniqueID Count
# <chr> <chr> <int>
# 1 Grp1 1-A 3
# 2 Grp1 1-B 3
# 3 Grp1 1-B 3
# 4 Grp1 1-C 3
# 5 Grp2 2-A 2
# 6 Grp2 2-A 2
# 7 Grp2 2-B 2
# 8 Grp3 3-A 1
# 9 Grp3 3-A 1
# 10 Grp3 3-A 1
数据
dat <- read.table(text = "Group UniqueID
Grp1 '1-A'
Grp1 '1-B'
Grp1 '1-B'
Grp1 '1-C'
Grp2 '2-A'
Grp2 '2-A'
Grp2 '2-B'
Grp3 '3-A'
Grp3 '3-A'
Grp3 '3-A'",
header = TRUE, stringsAsFactors = FALSE)
我想获取子组中唯一值的数量,并创建一个列,其中包含由子组填充的唯一值数量。
我已经尝试过这段代码,但它并没有完全按照我希望的方式工作:
data$ones=1
data=transform(data,Count=ave(ones,UniqueID,FUN=sum))
数据是这样的:
Group UniqueID
Grp1 1-A
Grp1 1-B
Grp1 1-B
Grp1 1-C
Grp2 2-A
Grp2 2-A
Grp2 2-B
Grp3 3-A
Grp3 3-A
Grp3 3-A
这就是我想要的样子:
Group UniqueID Count
Grp1 1-A 3
Grp1 1-B 3
Grp1 1-B 3
Grp1 1-C 3
Grp2 2-A 2
Grp2 2-A 2
Grp2 2-B 2
Grp3 3-A 1
Grp3 3-A 1
Grp3 3-A 1
如有任何帮助,我们将不胜感激。
我们可以使用 dplyr
包中的 n_distinct
。
library(dplyr)
dat2 <- dat %>%
group_by(Group) %>%
mutate(Count = n_distinct(UniqueID)) %>%
ungroup()
dat2
# # A tibble: 10 x 3
# Group UniqueID Count
# <chr> <chr> <int>
# 1 Grp1 1-A 3
# 2 Grp1 1-B 3
# 3 Grp1 1-B 3
# 4 Grp1 1-C 3
# 5 Grp2 2-A 2
# 6 Grp2 2-A 2
# 7 Grp2 2-B 2
# 8 Grp3 3-A 1
# 9 Grp3 3-A 1
# 10 Grp3 3-A 1
数据
dat <- read.table(text = "Group UniqueID
Grp1 '1-A'
Grp1 '1-B'
Grp1 '1-B'
Grp1 '1-C'
Grp2 '2-A'
Grp2 '2-A'
Grp2 '2-B'
Grp3 '3-A'
Grp3 '3-A'
Grp3 '3-A'",
header = TRUE, stringsAsFactors = FALSE)