【发布时间】:2020-10-09 05:27:13
【问题描述】:
嗨,我正在手动为我的数据框添加标签,如下所示,我有 800 列要标记,之后我创建了一个数据框的子集(数据的子设置有很多),然后将该数据框应用到函数中用于计算。
所有块的标签都可以不同,这也是为所有块一个一个地创建标签所花费的时间。
data<-data.frame( col1=c(1,1,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,1,1,1,NA,1,1,NA,NA,NA,NA,1,NA,NA,NA,NA,1,NA,1),
col2=c(1,1,1,1,1,NA,NA,NA,NA,1,1,1,1,1,NA,NA,NA,1,1,1,NA,1,1,1,1,1,NA,NA,NA,1,1,1,1,1,1,1,NA,NA,NA),
col3=c(1,1,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,1,1,1,NA,NA,NA,1,NA,NA,1,1,1,1,1,NA,NA,1),
col4=c(1,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
col5=c(1,2,1,1,1,2,1,2,2,1,2,NA,1,1,2,2,2,1,1,1,2,NA,2,1,1,1,2,2,2,NA,1,2,2,1,1,1,2,2,2)
)
data$col5<-factor(data$col5, levels=c(1,2), labels=c("Local","Overseas"))
df<- data
df$cc1<-1
df2<- subset(df, col5 == 'Local')
df$cc2<-ifelse(df$col5 == 'Local',1,NA)
lst<-list(df$cc1, df$cc2)
ldat<-list("ALL" = df, "Local" =df2)
col_names <- c("col1","col2"...."col4")
labels <- c("Sales","Ops"...."HR")
make_mutator <- function(x) {
paste0(
"factor(", names(faclist)[[x]],
",labels=c('",
paste0(faclist[[x]],
collapse = "','"
), "'))"
)
}
list_of_fac <- purrr::map_chr(seq_len(length(faclist)),
make_mutator)
names(list_of_fac) <- names(faclist)
ldat <- purrr::map(ldat,
~mutate(.,
!!!parse_exprs(list_of_fac)))
这非常好,对我有用....但是如果我要为列和标签分别提供列和标签,我只想要新的解决方案
col_names
那我怎样才能改变我的功能......??
【问题讨论】: