R 如何编写一个函数来获取调查中的平均值?

R 如何编写一个函数来获取调查中的平均值?,r,function,for-loop,if-statement,R,Function,For Loop,If Statement,您好,我正在尝试编写一个代码/函数,可以为每个数据集提供一组分数的平均值,但我需要一些帮助 下面是一个例子。我需要这个函数来给我分数的总和。参与者可以在0-101的范围内进行选择。但是对于数字2、5和6。我需要拿反分。最后,我需要明白这一点。所以分数除以6。 预期结果的答案是分数=226,平均值为37.667 数据 问题 分数 1. 我感到紧张 76 2. 我很冷静 90 3. 我很兴奋 52 4. 我很担心 65 5. 我很满意 90 6. 我很放松 90 如果我理解正确,您需要一个键来定义语

您好,我正在尝试编写一个代码/函数,可以为每个数据集提供一组分数的平均值,但我需要一些帮助

下面是一个例子。我需要这个函数来给我分数的总和。参与者可以在0-101的范围内进行选择。但是对于数字2、5和6。我需要拿反分。最后,我需要明白这一点。所以分数除以6。 预期结果的答案是分数=226,平均值为37.667

数据 问题 分数 1. 我感到紧张 76 2. 我很冷静 90 3. 我很兴奋 52 4. 我很担心 65 5. 我很满意 90 6. 我很放松 90
如果我理解正确,您需要一个键来定义语句分数是否颠倒。请注意,键中的响应顺序不相关,但来自dat的所有可能响应都必须在键中表示

由于真/假变量本质上是1/0,我们可以使用它直接从两个可选函数的乘积计算平均值

res <- sum(dat$Score * dat$Reversed, (101 - dat$Score) * !dat$Reversed) / nrow(dat)

101-dat$Score*中的感叹号!dat$Reversed很重要,因为它否定真/假指示器。

如果我理解正确,您需要一个键来定义语句分数是否反转。请注意,键中的响应顺序不相关,但来自dat的所有可能响应都必须在键中表示

由于真/假变量本质上是1/0,我们可以使用它直接从两个可选函数的乘积计算平均值

res <- sum(dat$Score * dat$Reversed, (101 - dat$Score) * !dat$Reversed) / nrow(dat)

101-dat$Score*中的感叹号!dat$Reversed很重要,因为它否定了真/假指示器。

我创建了两个函数,一个用于反转问题编号,另一个用于反转实际问题。使用这些函数,您可以自动执行代码

图书馆管理员 df% pullScores%>% 附录101-df%>% 滤器数据%in%reverse\u data%>% pullScores%>% 意思是 } 平均分数百分比 filterQuestion%在%reverse\u question%>%中 pullScores%>% 附录101-df%>% 滤器问题%在%reverse\u问题%>% pullScores%>% 意思是 } 分数平均值,c1,3,5 > [1] 46 得分的平均值,c“我很放松”,“我很担心” > [1] 41.83333
由v0.3.0于2021-02-04创建,我创建了两个函数,一个用于回答问题编号,另一个用于回答实际问题。使用这些函数,您可以自动执行代码

图书馆管理员 df% pullScores%>% 附录101-df%>% 滤器数据%in%reverse\u data%>% pullScores%>% 意思是 } 平均分数百分比 filterQuestion%在%reverse\u question%>%中 pullScores%>% 附录101-df%>% 滤器问题%在%reverse\u问题%>% pullScores%>% 意思是 } 分数平均值,c1,3,5 > [1] 46 得分的平均值,c“我很放松”,“我很担心” > [1] 41.83333
由v0.3.0于2021年2月4日创建,我不明白这些分数的总和应该是62。与此相关,还不清楚“反向分数”是什么意思:101-分数?您的代码用一个变量替换函数sum。永远不要使用与函数相对应的变量名。我不明白这些分数的总和应该是62。与此相关,还不清楚“反向分数”是什么意思:101-分数?您的代码用一个变量替换函数sum。永远不要使用与函数对应的变量名。这太棒了!但是我很难改变我的代码。在R中,我使用CSV文件而不是表。你能解释一下如何改变它,使它可以运行吗?我试着读取read table函数,但还是迷路了感谢youkey@Rose您在读取表时遇到的问题可能是文件名和分隔符。csv文件中的分隔符通常为,,但可以为;在一些电脑上。文件名应为字符向量。尝试像read.tablefile=filename.csv,header=TRUE,sep=,。啊,是的!它是这样运行的,但是现在我怎样才能访问这样的问题呢?我只是把它们写进代码里吗?比如说,谢谢你!我现在开始工作了。我不得不像你说的那样修改我的问题。这太棒了!但是我很难改变我的代码。在R中,我使用CSV文件而不是表。你能解释一下如何改变它,使它可以运行吗?我试着读取read table函数,但还是迷路了感谢youkey@Rose您在读取表时遇到的问题可能是文件名和分隔符。csv文件中的分隔符通常为,,但可以为;在一些电脑上。文件名应为字符向量。尝试像read.tablefile=filename.csv,header=TRUE,sep=,。啊,是的!它是这样运行的,但是现在我怎样才能访问这样的问题呢?我只是把它们写进代码里吗?比如说,谢谢你!我现在开始工作了。我哈 我会像你说的那样修改我的问题。
res <- sum(dat$Score * dat$Reversed, (101 - dat$Score) * !dat$Reversed) / nrow(dat)