基于R中的优先级计数映射特征
我有一张这样的桌子:基于R中的优先级计数映射特征,r,tidyverse,R,Tidyverse,我有一张这样的桌子: Feature priority n happy low 2 happy high 5 sad low 7 sad high 10 goofy high 2 mad low 4 mad high 3 worry high 5 worry low 5 我想给这些特性贴上标签,让优先级更频繁地出现 例如,快乐会被标记为高,因为它发生5次而低2次。
Feature priority n
happy low 2
happy high 5
sad low 7
sad high 10
goofy high 2
mad low 4
mad high 3
worry high 5
worry low 5
我想给这些特性贴上标签,让优先级更频繁地出现
例如,快乐会被标记为高,因为它发生5次而低2次。
如果某个功能同时具有高优先级和低优先级,且两者相等,则优先级应为中等
预期产出:
Feature priority
happy high
sad high
goofy high
mad low
worry medium
我们可以按“功能”分组,
过滤“n”为max
的行,然后通过将值替换为“中等”来总结“优先级”,如果有多行(n()>1
),如果所有的都存在“高”、“低”,然后返回“中等”或else
返回优先级
library(dplyr)
df1 %>%
group_by(Feature) %>%
filter(n == max(n)) %>%
summarise(priority = if(n() >1 &
all(c("high", "low") %in% priority)) "medium" else priority)
# A tibble: 5 x 2
# Feature priority
# <chr> <chr>
#1 goofy high
#2 happy high
#3 mad low
#4 sad high
#5 worry medium
库(dplyr)
df1%>%
分组依据(特征)%>%
过滤器(n==最大值(n))%>%
总结(优先级=如果(n()>1&
所有(c(“高”、“低”)%优先级中的%)“中”优先级)
#一个tibble:5x2
#功能优先级
#
#1高飞高中
#2快乐高中
#3疯狂低
#4悲伤的高
#5中等
数据
df1这真是太棒了!谢谢我忘了提一件事。如果有领带,我想把它标为中号。你知道我如何实现它吗?@Eisen如果某个特定功能的最大值只有“低”优先级,那么这种情况会发生什么变化?如果某个特定功能的优先级较低,则优先级也会较低,反之亦然。@Eisen假设你的前两个值,即“快乐”的优先级为“高”,并且都有“n”作为5。在这种情况下,您希望它作为medium
?@Eisen可能df1%%>%group\u by(Feature)%%>%filter(n==max(n))%%>%mutate(priority=if(n()>1&all(priority='high'))“medium”else priority)%%>%distinct(Feature,.keep\u all=TRUE)
(不清楚具体的连接条件)
df1 <- structure(list(Feature = c("happy", "happy", "sad", "sad", "goofy",
"mad", "mad", "worry", "worry"), priority = c("low", "high",
"low", "high", "high", "low", "high", "high", "low"), n = c(2L,
5L, 7L, 10L, 2L, 4L, 3L, 5L, 5L)), class = "data.frame", row.names = c(NA,
-9L))