r - 从数据框中选择列列表以转换为子集
问题描述
我正在尝试创建一个函数,为此在输入时我给出了一个修改列的列表。例如:样本数据是
dataa<-data.frame(
aa = c("q","r","y","v","g","y","d","s","n","k","y","d","s","t","n","u","l","h","x","c","q","r","y","v","g","y","d","s","n","k","y","d","s","t","n","u","l","h","x","c"),
col1=c(1,2,3,2,1,2,3,4,4,4,5,3,4,2,1,2,5,3,2,1,2,4,2,1,3,2,1,2,3,1,2,2,4,4,4,1,2,5,3,5),
col2=c(2,1,1,7,4,1,2,7,5,7,2,6,2,2,6,3,4,3,2,5,7,5,6,4,4,6,5,6,4,1,7,3,2,7,7,2,3,7,2,4)
)
我的要求是,我可以创建多个剪辑,如下所示,或者可以是一个剪辑列表,可能是我正在尝试重新编码我的数据集
dataa$col3 <- ifelse(dataa$aa == "y",1,0)
dataa$col4 <- ifelse(dataa$col2 == 7,1,0)
所以现在在我的功能要求中,我想要一个选定变量的子集进行计算。例如:
#i am applying my function like this
dat1 = dataa
var1 = "col1" # variable for which calculation will be done
grouping_var = list(dataa$col3,dataa$col4)
total_var= TRUE
#fun_1 <- function(dat1,var1,grouping_var,total_var){
total_col <- ifelse(total_var== TRUE,1,0)
var1 <- rlang::parse_expr(var1)
var2 <- dat1[unlist(grouping_var)] # i am trying to create a subset dataframe of selected grouping_var
#var2 <- data.frame(sapply(grouping_var,c)) # i have tried this too
dat1 <- dat1 %>% select(!!var1,!!var2)
# so after this line i would have a subset to calculations accordingly
var_lab(dat1[[1]]) <- ""
var_lab(dat1[[2]]) <- ""
tab1 <- expss::cro_cpct(total(),dat1[[1]],dat1[[2]])
tab1 <- as.data.frame(tab1)
#}
解决方案
无法根据列的值选择列。
一种简单的方法是将它们作为字符向量传递并选择。尝试 :
dat1 = dataa
var1 = "col1"
grouping_var = c('col3', 'col4') #Passing columns as character vector
total_var= TRUE
#fun_1 <- function(dat1,var1,grouping_var,total_var){
total_col <- as.integer(total_var)
#total_col <- ifelse(total_var== TRUE,1,0)
dat1 <- dat1[grouping_var]
expss::var_lab(dat1[[1]]) <- ""
expss::var_lab(dat1[[2]]) <- ""
tab1 <- expss::cro_cpct(expss::total(),dat1[[1]],dat1[[2]])
tab1 <- as.data.frame(tab1)
#}
推荐阅读
- java - 隐藏核心逻辑并仅向应用程序显示包装器 API
- reactjs - 材质 UI 单选按钮
- marklogic - Marklogic DLS 文档权限设置不正确?
- java - Android:无法连接到服务器时应用程序崩溃
- python - Scrapy item 只保存循环中的最后一个元素
- javascript - cordova-gallery-api 插件在尝试调用 getMedia 时挂起应用程序
- i2c - 8051 MCU I2C 信号无响应
- java - Hibernate/JPA 将本机查询的结果映射到非实体持有实体
- html - HTML Audio 是否进行了一些更新?
- javascript - 无法获取 Request.azureMobile