gpt4 book ai didi

r - 尝试在 r 中编写一个函数来计算变量并分配级别和标签

转载 作者:行者123 更新时间:2023-12-04 12:32:36 24 4
gpt4 key购买 nike

我正在尝试编写一个使用 ifelse 计算新变量的函数(在这方面非常新),然后给这个新变量一个标签并给出级别标签。然后通过运行频率和交叉表检查它是否有效。如果我按照硬编码的步骤执行它,我可以让它工作,但我正在努力让它作为一个函数工作。

这就是我希望函数执行的操作并且它有效:

  df$new_variable<-ifelse(df$other_variable==0,1,0)
label(df$new_variable) <- "Not applicable"
levels(df$Snew_variable) <- list(No=0, Yes=1)
frq(df, new_variable) #see that it created the new variable
cro(df$other_variable, df$new variable) #see that it was created
correctly

这就是我一直在努力工作的:

    compute_new_var<-function(df, x) {
df$new_variable<-ifelse(x==0,1,0)
label (df$new_variable) <- "Not applicable"
levels(df$new_variable) <-list(No=0, Yes=1)
frq(df, new_variable)
cro(df$new_variable, x)
}

compute_new_var(df_name, other_variable_name)

它正在做几件事。它不喜欢“标签”,所以我一直在离开标签和水平线。然后它给我这个错误,找不到对象“new_variable”。我不确定我是否在参数中遗漏了一些东西,或者它是否没有创建 new_variable 或者它是否正在创建它但没有将它存储在我的 df 中,或者我是否只是想在这里塞满太多东西。有什么想法吗?

我希望它创建新变量,为变量分配标签,为值分配标签,并打印频率和交叉表。

最佳答案

我不得不猜测一些软件包,因为其中一些函数有多个版本。请检查:)

我认为唯一的问题是您在 x - other_variable_name 中的函数中输入了一个列名字符,但您没有在数据中引用它。所以我在函数中用 df[[x]] 替换了 x 。这是唯一的主要区别。

# please include all packages in the code. Are these right?
library(Hmisc)
library(sjmisc)
library(expss)
set.seed(1)
# table with column called y
df <- data.frame(y=sample(0:3, 10, replace=TRUE))

compute_new_var <- function(df, x){
# it was missing the reference to df
df$new_variable <- ifelse(df[[x]]==0, 1, 0)

# don't need to add package here, just doing it to highlight where they are used
Hmisc::label(df$new_variable) <- "Not applicable"
levels(df$new_variable) <- list(No=0, Yes=1)
sjmisc::frq(df, new_variable)
return(expss::cro(df$new_variable, x))
}

compute_new_var(df, x="y")

关于r - 尝试在 r 中编写一个函数来计算变量并分配级别和标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57824426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com