dplyr按首选字符串值汇总
我有一个带有ID和字符串值的数据帧,其中一些我更喜欢:dplyr按首选字符串值汇总,r,string,dplyr,summarize,R,String,Dplyr,Summarize,我有一个带有ID和字符串值的数据帧,其中一些我更喜欢: library(dplyr) d1<-data.frame(id=c("a", "a", "b", "b"), value=c("good", "better", "good", "good")) 你可以尝试一种因子方法。 首先,需要字符串的有序向量
library(dplyr)
d1<-data.frame(id=c("a", "a", "b", "b"),
value=c("good", "better", "good", "good"))
你可以尝试一种因子方法。 首先,需要字符串的有序向量,如:
my_levels <- c("better", "good")
myu级别%
变异(数值=因子(数值,级别=我的级别)%>%as.numeric)%>%
分组依据(id)%>%
汇总(res=min(value\u num))%>%
突变(res_fac=因子(res,labels=我的水平))
#一个tibble:2x3
id res_fac
更好
2 b 2好
您可以尝试一种因子方法。
首先,需要字符串的有序向量,如:
my_levels <- c("better", "good")
myu级别%
变异(数值=因子(数值,级别=我的级别)%>%as.numeric)%>%
分组依据(id)%>%
汇总(res=min(value\u num))%>%
突变(res_fac=因子(res,labels=我的水平))
#一个tibble:2x3
id res_fac
更好
2 b 2好
类似于@roman的答案,但使用该软件包,您可以执行以下操作来过滤“更好”的行:
require(data.table)
setDT(d1)
#将值转换为因子
d1[,值:=系数(值,等级=c(‘更好’、‘良好’)]
#返回每个id组的第一个有序值
d1[,.SD[订单(值)][1],id]
类似于@roman的答案,但使用该软件包,您可以执行以下操作来过滤“更好”的行:
require(data.table)
setDT(d1)
#将值转换为因子
d1[,值:=系数(值,等级=c(‘更好’、‘良好’)]
#返回每个id组的第一个有序值
d1[,.SD[订单(值)][1],id]
您可能会觉得这很有帮助您可能会觉得这很有帮助
id | value
----------
"a"| "better"
"b"| "good"
my_levels <- c("better", "good")
d1 %>%
mutate(value_num = factor(value, levels = my_levels) %>% as.numeric) %>%
group_by(id) %>%
summarize(res = min(value_num)) %>%
mutate(res_fac = factor(res, labels = my_levels))
# A tibble: 2 x 3
id res res_fac
<chr> <dbl> <fct>
1 a 1 better
2 b 2 good