错误:连接列必须存在于数据中。 x `column1` 和 `column2` 的问题
Posted
技术标签:
【中文标题】错误:连接列必须存在于数据中。 x `column1` 和 `column2` 的问题【英文标题】:Error: Join columns must be present in data. x Problem with `column1` and `column2` 【发布时间】:2022-01-11 18:34:01 【问题描述】:这个函数出错了,当我用 var1-var3 更改 colum1-column3 时它可以工作,这很奇怪:
var1<-c(rep("A",4),rep("B",4))
var2<-c(rep("C",4),rep("D",4))
var3<-c(rep("E",2),rep("F",4),rep("G",2))
dataset<-data.frame(var1,var2,var3)
Rfun<-function(data,column1,column2,column3)
data_<-data %>%dplyr::mutate(n = 1, column3 := str_c('column3_', column3)) %>%
complete(column1, column2, column3, fill = list(n = 0)) %>%
pivot_wider(names_from = column3, values_from = n, values_fn = sum) %>%
mutate(Total = rowSums(across(where(is.numeric)))) %>%
group_by(column1) %>%
mutate(across(starts_with('column3'),
~ case_when(. == 0 ~ '0(0%)',
TRUE ~ sprintf('%d(%d%%)', ., 100 * mean(. != 0))))) %>%
ungroup
library(vcdExtra)
test<-CMHtest(table(data$column2, data$column3, data$column1),overall=TRUE)
list<-c(data_,test)
return(list)
Rfun(dataset,var1,var2,var3)
这是错误:
【问题讨论】:
您的问题是Rfun()
中的complete(column1, column2, column3, fill = list(n = 0))
行。此时函数中,data
还没有任何名为column1
和column2
的列;而column3
是在上面定义的:mutate(..., column3 = ...)
。如果您希望complete()
将column1
视为data
中的var1
变量,那么您需要使用语法column1
,因为@akrun 建议here。
这将捕获符号 var1
,作为参数传递给调用Rfun(dataset, column1 = var1, ...)
中的column1
参数;它会将complete(column1, ...)
行替换为complete(var1, ...)
。
【参考方案1】:
考虑使用 进行评估
Rfun<-function(data,column1,column2,column3)
data %>%
mutate(n = 1, column3 := str_c('column3_', column3)) %>%
complete(column1, column2, column3, fill = list(n = 0)) %>%
pivot_wider(names_from = column3, values_from = n, values_fn = sum) %>%
mutate(Total = rowSums(across(where(is.numeric)))) %>%
group_by(column1) %>%
mutate(across(starts_with('column3'),
~ case_when(. == 0 ~ '0(0%)',
TRUE ~ sprintf('%d(%d%%)', ., 100 * mean(. != 0))))) %>%
ungroup
-测试
Rfun(dataset,var1,var2,var3)
# A tibble: 4 × 6
var1 var2 column3_E column3_F column3_G Total
<chr> <chr> <chr> <chr> <chr> <dbl>
1 A C 2(50%) 2(50%) 0(0%) 4
2 A D 0(0%) 0(0%) 0(0%) 0
3 B C 0(0%) 0(0%) 0(0%) 0
4 B D 0(0%) 2(50%) 2(50%) 4
【讨论】:
谢谢 :) 当我在函数“CMH”测试中集成并且我想打印它时它不起作用的另一件事:test @Ruser-lab9CMH
是什么?如果您在另一个函数中使用此函数。可能您需要!!
参数,即Rfun(dataset, !!var1, !!var2, !!var3)
我不知道你是如何在CMHtest
内部传递Rfun的
我将对上面的帖子进行编辑,包括 CMHtest() 函数
@Ruser-lab9 谢谢,请做以上是关于错误:连接列必须存在于数据中。 x `column1` 和 `column2` 的问题的主要内容,如果未能解决你的问题,请参考以下文章
Tensorflow 1.x 的 feature_columns 项必须是 _FeatureColumn。给定类型是列表
ValueError:`class_weight`必须包含数据中的所有类。类{1,2,3}存在于数据中,但不存在于`class_weight`中