如何计算列中的值数并将其写入R中的新列? [重复]

问题描述 投票:0回答:2

假设有一个包含值的列

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

可以创建一个功能而无需手动计算每个网站吗?

r dataset
2个回答
2
投票

1)ave使用最后的注释中可重复显示的数据,我们可以使用avelength应用于每个组:

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)

1
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.