【问题标题】:R - How do I loop through several rows at once?R - 如何一次循环遍历多行?
【发布时间】:2019-10-29 00:38:00
【问题描述】:

对于我的论文,我必须为几个参与者估算值。我正在使用时间序列数据,每个参与者都有 297 行和 18 列(变量)。 我想为每个参与者估算值,因此我必须对每 297 行执行一次估算方法。 这些行标有参与者 ID(因此第一个参与者的 297 乘以 1。 如何遍历这个庞大的数据集以执行每个主题的插补?

提前致谢!

示例数据:

Participant ID  Var1 Var2
1               2.5  2.3
1               NA   2.5
1               2.2  2.4
1               2.6  2.5
2               2.2  2.2
2               2.3  2.4
2               NA   NA
2               NA   NA

在此示例中,我为每位参与者使用了 4 行,但我为每位参与者设置了 297 行。我想为每个参与者和每个变量分别做我的插补方法。

【问题讨论】:

  • mice 包实际上就是为此目的而编写的。
  • 您能否提供示例原始数据以及最终应该是什么样子的示例?
  • 感谢您的回复。我已经知道我的插补方法,我只需要找到一种方法来从我的数据集中选择参与者,以对每个参与者应用插补方法。
  • 查看 dplyr 包中的 group_by 函数

标签: r loops imputation


【解决方案1】:

你可以试试

library(tidyverse)
library(Hmisc)
df %>% 
  group_by(Participant_ID) %>% 
  mutate_at(vars(-1), .funs = Hmisc::impute)

【讨论】:

  • 代替 Hmisc::imput 您还可以放置您之前定义的自己的插补函数
  • 谢谢。我在安装和加载 Hmisc 时遇到问题。现在更新我的 R。
  • 我已将其更改为:newData % group_by(pid) %>% mutate_at(vars(-1), .funs = na.kalman(dataESM[,8:24) ], model = "StructTS", smooth = TRUE)) 它给了我错误:没想到会这样;调用 rlang::last_error() 查看回溯。我做错了什么?
  • 它是否与 Hmisc::imput 函数一起使用,或者您是否也会在那里遇到相同的错误?正如错误消息所示,您可以调用 rlang::last_error() 来查看错误的回溯,这可能会提示您为什么会发生此错误。你也可以和我们一起回溯
  • 试试mutate_at(vars(-1), .funs = na.kalman, model = "StructTS", smooth = TRUE)mutate_at(vars(-1), .funs = ~na.kalman(. , model = "StructTS", smooth = TRUE))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-15
  • 2020-11-10
  • 2020-06-14
  • 2011-11-01
  • 2016-06-28
  • 2019-08-29
相关资源
最近更新 更多