Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的groupby和条件summary_R_Dplyr - Fatal编程技术网

R中的groupby和条件summary

R中的groupby和条件summary,r,dplyr,R,Dplyr,我的代码是脏的。 如果条件小于2,则名称=不受欢迎 df <- data.frame(vote=c("A","A","A","B","B","B","B","B","B","C","D"), val=c(rep(1,11)) )

我的代码是脏的。 如果条件小于2,则名称=不受欢迎

df <- data.frame(vote=c("A","A","A","B","B","B","B","B","B","C","D"),
           val=c(rep(1,11))
           )

df %>% group_by(vote) %>% summarise(val=sum(val))
df%分组人(投票)%>%总结(val=sum(val))
out
投票瓦尔
1 A 3
2 B 6
3 C 1
4d1
但我需要

  vote    val
  <fct> <dbl>
1 A         3
2 B         6
3 unpopular 2

vote val
1 A 3
2 B 6
3不受欢迎的2
我的想法是

df2 <- df %>% group_by(vote) %>% summarise(val=sum(val))
df2$vote[df2$val < 2] <- "unpop"
df2 %>% group_by....
df2%分组(投票)%>%总结(val=sum(val))
df2$投票[df2$val<2]%分组人。。。。
这不酷


你知道有什么很酷和有用的功能吗?

我们可以进行双重分组

library(dplyr)
df %>% 
    group_by(vote) %>% 
    summarise(val=sum(val)) %>%
    group_by(vote = replace(vote, val <2, 'unpop')) %>% 
    summarise(val = sum(val))

或者使用猫类产品的
fct\u lump\n
from

library(forcats)
df %>% 
  group_by(vote = fct_lump_n(vote, 2, other_level = "unpop")) %>%
  summarise(val = sum(val))
# A tibble: 3 x 2
#  vote    val
#  <fct> <dbl>
#1 A         3
#2 B         6
#3 unpop     2

我们可以进行双重分组

library(dplyr)
df %>% 
    group_by(vote) %>% 
    summarise(val=sum(val)) %>%
    group_by(vote = replace(vote, val <2, 'unpop')) %>% 
    summarise(val = sum(val))

或者使用猫类产品的
fct\u lump\n
from

library(forcats)
df %>% 
  group_by(vote = fct_lump_n(vote, 2, other_level = "unpop")) %>%
  summarise(val = sum(val))
# A tibble: 3 x 2
#  vote    val
#  <fct> <dbl>
#1 A         3
#2 B         6
#3 unpop     2

如果您想根据基本R中
val
sum
进行
投票,您可以这样做:

aggregate(val~vote, transform(aggregate(val~vote, df, sum), 
          vote = replace(vote, val < 2, 'unpop')), sum)

#   vote val
#1     A   3
#2     B   6
#3 unpop   2
aggregate(val~vote,transform)(聚合(val~vote,df,sum),
投票=替换(投票,val<2,'unpop')、总和)
#投票瓦尔
#1 A 3
#2 B 6
#3联索政治处2

如果您想根据
val
sum
在基数R中进行
投票
,您可以这样做:

aggregate(val~vote, transform(aggregate(val~vote, df, sum), 
          vote = replace(vote, val < 2, 'unpop')), sum)

#   vote val
#1     A   3
#2     B   6
#3 unpop   2
aggregate(val~vote,transform)(聚合(val~vote,df,sum),
投票=替换(投票,val<2,'unpop')、总和)
#投票瓦尔
#1 A 3
#2 B 6
#3联索政治处2
aggregate(val~vote, transform(aggregate(val~vote, df, sum), 
          vote = replace(vote, val < 2, 'unpop')), sum)

#   vote val
#1     A   3
#2     B   6
#3 unpop   2