这个问题在这里已有答案:
假设有一个包含值的列
Website
Abc
Abc
Abc
Xyz
Xyz
Pqr
Uvw
现在我想计算列中Abc或其他名称的次数,并在下一列中写入相应的计数。
Website Total
Abc 3
Abc 3
Abc 3
Xyz 2
Xyz 2
Pqr 1
Uvw 1
可以创建一个功能而无需手动计算每个网站吗?
1)ave使用最后的注释中可重复显示的数据,我们可以使用ave
将length
应用于每个组:
transform(DF, Count = ave(seq_along(Website), Website, FUN = length))
赠送:
Website Count
1 Abc 3
2 Abc 3
3 Abc 3
4 Xyz 2
5 Xyz 2
6 Pqr 1
7 Uvw 1
2)聚合或不重复:
aggregate(list(Count = 1:nrow(DF)), DF["Website"], length)
赠送:
Website Count
1 Abc 3
2 Pqr 1
3 Uvw 1
4 Xyz 2
3)表另一种方法是创建一个表而不是data.frame:
table(DF)
赠送:
DF
Abc Pqr Uvw Xyz
3 1 1 2
4)xtabs或我们可以使用xtabs
:
xtabs(DF)
赠送:
Website
Abc Pqr Uvw Xyz
3 1 1 2
可重复输入的输入:
Lines <- "Website
Abc
Abc
Abc
Xyz
Xyz
Pqr
Uvw"
DF <- read.table(text = Lines, header = TRUE, as.is = TRUE, strip.white = TRUE)
tidyverse
的一个选择是add_count
library(dplyr)
df1 %>%
add_count(Website)
# A tibble: 7 x 2
# Website n
# <chr> <int>
#1 Abc 3
#2 Abc 3
#3 Abc 3
#4 Xyz 2
#5 Xyz 2
#6 Pqr 1
#7 Uvw 1