R语言 如何比较和计算多个列中唯一值的数量

dohp0rv5  于 2022-12-06  发布在  其他
关注(0)|答案(3)|浏览(197)

我目前正在寻找类似于df的东西,我希望能够生成类似于df2的东西。在指定列值相互比较的情况下,对特定出现的次数进行计数,并将计数放入新 Dataframe 的新列中。
例如:在df中,组合1、5和9出现3次。
第一个
我试过用dplyr

df2 <- df %>%
  distinct(col1,col2, col3) %>%
  group_by(col3) %>%
  summarize("count" = n())

没有成功

f2uvfpb9

f2uvfpb91#

library(dplyr)

df %>% 
  count(col1,col2,col3)

  col1 col2 col3 n
1    1    5    9 3
2    2    6   10 2
3    3    7   11 2
4    4    8   12 1
5    4    8   13 1
hjzp0vay

hjzp0vay2#

使用plyr可以吗?

library(plyr)
ddply(df,.(col1,col2,col3),nrow)

输出量:

col1 col2 col3 V1
1    1    5    9  3
2    2    6   10  2
3    3    7   11  2
4    4    8   12  1
5    4    8   13  1
yh2wf1be

yh2wf1be3#

使用dplyr执行此操作的最佳方法是使用Vinícius Félix's response建议的count()
然而,这里有一个使用你开始的语法的修复。你的思考方向是正确的。

媒介柜

library(dplyr)

代码的解决方案

df %>%
#  distinct(col1,col2, col3) # you don't need this row, remove it.
  group_by(col1, col2, col3) %>%  # you have to group by all columns you want to check
  summarize(count = n()) %>% # quotes are not needed, but are not wrong
  ungroup()  # Always add ungroup() at the end to solve future problems

输出

#> # A tibble: 5 × 4
#>    col1  col2  col3 count
#>   <dbl> <dbl> <dbl> <int>
#> 1     1     5     9     3
#> 2     2     6    10     2
#> 3     3     7    11     2
#> 4     4     8    12     1
#> 5     4     8    13     1

创建于2022年12月3日,使用reprex v2.0.2

相关问题