r - 为不同的数据框列表动态标记
问题描述
我正在尝试创建一个自定义函数来为修改后的数据框列表提供标签。例如,我有一个如下所示的数据框。
data<-data.frame( Q1=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),
Q2=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),
Q3=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),
Q4=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),
Q5=c(NA,1,NA,NA,1,NA,1,1,NA,NA,1,NA,1,1,NA,1,NA,1,1,NA,1,NA,NA,1,NA,NA,1,NA,1,NA,NA,1,NA,1,NA,1,NA,1,NA),
Q6=c(1,NA,1,NA,NA,1,NA,NA,1,NA,1,NA,1,1,NA,1,1,NA,1,NA,1,1,NA,1,NA,1,1,1,1,1,1,1,NA,1,NA,1,1,NA,1),
Q7=c(NA,1,1,NA,1,NA,1,1,NA,NA,1,1,NA,NA,NA,1,1,NA,1,NA,1,1,NA,1,NA,1,NA,1,NA,1,NA,1,NA,1,NA,NA,1,1,NA),
Q8=c(NA,1,1,NA,1,NA,1,1,NA,NA,1,1,NA,NA,NA,1,1,NA,1,NA,1,1,NA,1,NA,1,NA,1,NA,1,NA,1,NA,1,NA,NA,1,1,NA),
region=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)
)
解决方案
conv_fac <- function(
dataset, # list containing input dataframes
labels # list of vectors; in each vector, first label is destination column and all the rest are sources
){
for (i in seq_len(length(dataset))){
this_df <- dataset[[i]]
for (this_label in labels){
col_target <- this_label[1]
cols_source <- this_label[-1]
vecs <- this_df[,cols_source]
cat('\nProcessing dataframe #',i,': column ',col_target, ' from columns ', paste0(cols_source, collapse = ', '), sep = '')
this_df[[col_target]] <- coalesce(!!!vecs)
}
this_df -> dataset[[i]]
}
return(dataset)
}
# Usage:
ldat <- list("ALL" = df, "other" =df2)
var1 <- c("Q9","Q8","Q4")
var2 <- c("Q7","Q6","Q5")
ldat2 <- conv_fac(dataset = ldat, labels = list(var1,var2))
推荐阅读
- python - 给定一些约束,对等腰三角形的两个剩余顶点进行采样
- laravel - Laravel - 邮递员返回错误 500 内部服务器错误
- python - 如何阻止 bazel 依赖 Python2
- docker - 如何创建 docker-compose 虚拟主机?
- typescript - 如何指定具有子对象的接口作为具有解构道具的函数的类型
- stata - Stata 输出表:estout 中的条件符号
- reactjs - Spring React 和 Sessions .. 如何保持会话
- postgresql - 如何根据另一列设置一列的值?
- typo3 - FE用户登录后TYPO3购物车扩展丢失购物车
- c - 如何在flutter应用程序上访问apriltag库