R中的groupby和条件summary
我的代码是脏的。 如果条件小于2,则名称=不受欢迎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)) )
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