R 为大因子数据集创建汇总统计(汇总所有),保留因子信息

R 为大因子数据集创建汇总统计(汇总所有),保留因子信息,r,class,dplyr,label,summarize,R,Class,Dplyr,Label,Summarize,我有一个包含观测调查数据的大型数据集,我想将其汇总到国家年度水平(也用于因子),以便将数据用作另一个数据集中的国家级数据。我想聚合的一个df具有以下类: character labelled numeric 24 272 50 其中,我非常确定标记的类是Hmisc库的结果 我一开始是这样的,效果很好 dfsum <- df %>% group_by(countryyear) %>% summarise_all(funs(if

我有一个包含观测调查数据的大型数据集,我想将其汇总到国家年度水平(也用于因子),以便将数据用作另一个数据集中的国家级数据。我想聚合的一个
df
具有以下类:

character  labelled   numeric 
       24       272        50
其中,我非常确定标记的类是
Hmisc
库的结果

我一开始是这样的,效果很好

dfsum <- df %>%
 group_by(countryyear) %>%
 summarise_all(funs(if(is.numeric(.)) mean(., na.rm = TRUE) else first (.)))
但这并没有真正起到任何作用(没有添加任何额外的变量)


更重要的是,我希望在总结过程中保留因子信息。是否有可能以不同的方式重新附加该信息?例如,它是一个二进制值(如果原始变量的50%以上是0或1),或者添加刻度(通过取原始变量的最小值和最大值)?

通过结合许多其他答案,请查看相应的链接,我设法按如下方式处理我的问题:

#1
as.numeric.factor <- function(x) {as.numeric(as.character(x))}
#2
df[] = lapply(df, as.numeric.factor)
#3
cols = sapply(df, is.numeric)
cols = names(cols)[cols]
#4
dfsummary = df[, lapply(.SD, mean, na.rm=TRUE), .SDcols = cols, by=countryyear]
#1

as.numeric.factor可能是某些类/属性与汇总不匹配。您可以删除这些属性,然后重试
df%>%as.data.frame%>%groupby(countryyear)
谢谢。。是否有一种简单的方法来存储类/属性,并在执行操作后将其添加回?如果类属性如此重要,可能是您可以使用
base R
在tidyverse外部执行这些操作,以便不会发生任何冲突
#1
as.numeric.factor <- function(x) {as.numeric(as.character(x))}
#2
df[] = lapply(df, as.numeric.factor)
#3
cols = sapply(df, is.numeric)
cols = names(cols)[cols]
#4
dfsummary = df[, lapply(.SD, mean, na.rm=TRUE), .SDcols = cols, by=countryyear]