【发布时间】:2021-02-25 22:26:44
【问题描述】:
我试图在包含 20 个问题的子量表中为我的研究参与者提供一个平均值。我首先使用以下代码将字符串响应(例如“从不(零次)”、“很少(一次或两次”等)转换为 1 到 5 个数字输出:
dataset.clean1$Q11_22 <- revalue(dataset.clean1$Q11_22 , c("Never (zero occasions)" = "1" , "Rarely (one or two occasions)" = "2", "Multiple times (three or more occasions)" = "3", "Regularly (at least once every 1-3 months)" = "4", "Weekly (at least once a week)" = "5"))
我为每个问题做了 20 次(我知道这可能是最不优雅的方法,但这是我目前所知道的全部)。
现在我试图让每个参与者在 Q11_22 到 Q32_43 的平均水平,并让 R 跳过任何空白/空行。我尝试了以下方法(未包括所有 20 列,因此我可以快速测试它):
ave.exposure <- dataset.clean1$ave.exposure <- mean(dataset.clean1$Q11_22, dataset.clean1$Q12_23, dataset.clean1$Q13_24, na.rm=TRUE)
我收到以下错误:
警告消息:在 mean.default(dataset.clean1$Q11_22, dataset.clean1$Q12_23, dataset.clean1$Q13_24, :argument is not numeric or logical: 返回 NA
现在我对两件事感到困惑:
- 我是否不需要在步骤 1 中将尝试替换字符串的数值放入
" "中(例如
dataset.clean1$Q11_22 <- revalue(dataset.clean1$Q11_22 , c("Never (zero occasions)" = 1
代替:
dataset.clean1$Q11_22 <- revalue(dataset.clean1$Q11_22 , c("Never (zero occasions)" = "1"`) ?
- 我如何(以一种易于理解的方式,无论多么乏味)找到所有这些列中每个参与者的平均值?
【问题讨论】:
-
您已使用
revalue将文本字符串转换为其他文本字符串 -"1"(字符)与1(数字)不同。你得到一个错误,说你的数据不是数字。如果您正在跨行工作,那么您可以使用rowMeans(dataset[ c("var1","var2") ], na.rm=TRUE)我认为。请参阅此处以获得更清晰的解释 - stackoverflow.com/questions/22458644/… -
如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example。
-
你好,晚邮。我选择使用类似的解决方案将字符转换为数字 dataset.clean1$Q11_22
标签: r