小编Luc*_*nes的帖子

通过模拟数据替换NA

在包含数字块和NA块的向量中,例如:

score <- c(0,1,2,3,4,NA,NA,0,-1,0,1,2,NA,NA,NA)
Run Code Online (Sandbox Code Playgroud)

有没有办法通过在NA块之前从最新值开始向上计数来模拟缺失值?

所以最终会:

score.correct <- c(0,1,2,3,4,5,6,0,-1,0,1,2,3,4,5)
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

r na

10
推荐指数
1
解决办法
200
查看次数

计算数据帧中的计数变量

我有一个R数据框:

a <- 1:12  
list <- c(rep("x",3),rep("y",4),rep("z",3),rep("x",2))  
data <- data.frame(a,list)

data  
 a list  
 1    x  
 2    x  
 3    x  
 4    y  
 5    y  
 6    y  
 7    y  
 8    z  
 9    z  
10    z  
11    x  
12    x
Run Code Online (Sandbox Code Playgroud)

我想创建一个新列,每当"list"的值发生变化时,该列开始计数为1,即在此示例中:

b <- c(1:3,1:4,1:3,1:2)    
data <- data.frame(a,list,b)  
Run Code Online (Sandbox Code Playgroud)

我不是R的专家,也不能为我的生活找到一种有效的方法.我的主要问题似乎是"list"的任何值都可以随时返回,但是对于一个值的块的长度没有规则.有没有人有任何想法?谢谢!

r

8
推荐指数
2
解决办法
249
查看次数

for循环中的多个glm

我有一个 R 数据框,被大大简化为:

id <- rep(1:2, c(6,8))
correct <- sample(0:1,14,TRUE)
phase <- c(rep("discr",3),rep("rev",3), rep("discr",4),rep("rev",4))
dat <- data.frame(id,correct,phase)
Run Code Online (Sandbox Code Playgroud)

作为id我的受试者(实际上我的受试者远不止 2 个),correct= 响应编码为不正确 (0) 或正确 (1),以及phases歧视和逆转(受试者内因素)。

我想以以下形式执行逻辑回归

glm(correct~phase, dat, family="binomial")
Run Code Online (Sandbox Code Playgroud)

稍后可能会添加额外的预测变量。然而,由于每个受试者的数据量不同,我想glm()对每个受试者单独执行,然后将系数与方差分析进行比较以了解群体效应。我想在 for 循环中以以下形式执行此操作

for(i in seq_along(dat$id)){
   my_glm[i] <- glm(correct~list,dat[dat$id==i,],family="binomial")
}
Run Code Online (Sandbox Code Playgroud)

但不断收到错误消息

>Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
 contrasts can be applied only to factors with 2 or more levels.
Run Code Online (Sandbox Code Playgroud)

我检查了我的数据,没有任何因素只包含一个水平。所有受试者都至少给出一项错误和一项正确反应,并且所有人都参与了歧视和逆转。当我指定特定主题时,该函数在循环外工作。

for-loop r glm

5
推荐指数
2
解决办法
4231
查看次数

标签 统计

r ×3

for-loop ×1

glm ×1

na ×1