计算值[R]的出现次数

计算值[R]的出现次数,r,dataframe,R,Dataframe,我有一个名为test的数据帧,如下所示: group v x 1 a 110 114 2 a 90 150 3 c 57 100 4 d 53 98 5 e 114 67 6 f 143 126 7 g 110 95 8 g 106 101 9 i 103 70 10 j 149 73 我还有一个名为hold_df的唯一

我有一个名为test的数据帧,如下所示:

      group   v   x
1      a    110 114
2      a    90 150
3      c    57 100
4      d    53  98
5      e   114  67
6      f   143 126
7      g   110  95
8      g   106 101
9      i   103  70
10     j   149  73
我还有一个名为hold_df的唯一组值的数据帧

  groups   
1      a 
2      c  
3      d  
4      e 
5      f 
6      g 
7      i 
8      j 
我想添加列来保存_df,其中包括测试数据帧中唯一发生的计数,以及当列v超过某个阈值(例如100)时唯一发生的数量

  groups  unique uniqueConditional  
1      a    2       1
2      c    1       0
3      d    1       0
4      e    1       1
5      f    1       1
6      g    2       2
7      i    1       1
8      j    1       1
具有基本功能:

hold_df <- cbind(
  setNames(data.frame(table(test$group)),c("groups","unique")),
  unique_conditional = data.frame(table(subset(test,v>100)$group))[,2])

#   groups unique unique_conditional
# 1      a      2                  1
# 2      c      1                  0
# 3      d      1                  0
# 4      e      1                  1
# 5      f      1                  1
# 6      g      2                  2
# 7      i      1                  1
# 8      j      1                  1
来自dplyr的解决方案。我们可以使用group_by和Summary来总结测试数据框架。test2是最终输出

library(dplyr)

test2 <- test %>%
  group_by(group) %>%
  summarise(unique = n(), uniqueConditional = sum(v > 100))

test2
    # A tibble: 8 x 3
  group unique uniqueConditional
  <chr>  <int>             <int>
1     a      2                 1
2     c      1                 0
3     d      1                 0
4     e      1                 1
5     f      1                 1
6     g      2                 2
7     i      1                 1
8     j      1                 1
数据准备
相关的帖子,可能还有更多。谢谢!test3代码行给了我一个错误。你确定吗?你从示例数据集或实际数据集中得到了一个错误?没有更多的信息,我不知道发生了什么。
test3 <- test2 %>% semi_join(hold_df, by = c("group" = "groups")) 
test <- read.table(text = "      group   v   x
1      a    110 114
                   2      a    90 150
                   3      c    57 100
                   4      d    53  98
                   5      e   114  67
                   6      f   143 126
                   7      g   110  95
                   8      g   106 101
                   9      i   103  70
                   10     j   149  73",
                   header = TRUE, stringsAsFactors = FALSE)

hold_df <- read.table(text = "  groups   
1      a 
                      2      c  
                      3      d  
                      4      e 
                      5      f 
                      6      g 
                      7      i 
                      8      j ",
                      header = TRUE, stringsAsFactors = FALSE)