我想根据对原始变量施加的条件创建一个新变量。让我们说
以下代码描述了该程序,
> mydata <- data.frame(var=sample(1:20))
> mydata$newvar <- rep(NA, nrow(mydata))
> mydata$newvar[mydata$var < 10] <- mydata$var
Warning message:
In mydata$newvar[mydata$var < 10] <- mydata$var :
number of items to replace is not a multiple of replacement length
如警告信息所示,结果很糟糕。例如,在第4行和第5行中,&#34; newvar&#34;被赋予&#34; var&#34;的值。分别在第2行和第3行。你能告诉我出了什么问题吗?
> mydata
var newvar
1 3 3
2 16 NA
3 13 NA
4 5 16
5 7 13
6 19 NA
7 4 5
8 17 NA
9 9 7
10 20 NA
11 14 NA
12 8 19
13 10 NA
14 6 4
15 1 17
16 11 NA
17 18 NA
18 15 NA
19 2 9
20 12 NA
我对R相对较新,并且仍在学习如何操纵变量和数据。要创建新变量,我理解我可以循环遍历需要更改的索引,如下所示
mydata$newvar <- rep(NA, nrow(mydata))
loop_through_these <- which(mydata$var < 10)
for(i in loop_through_these){
mydata$newvar[i] <- mydata$var[i]
}
> mydata
var newvar
1 3 3
2 16 NA
3 13 NA
4 5 5
5 7 7
6 19 NA
7 4 4
8 17 NA
9 9 9
10 20 NA
11 14 NA
12 8 8
13 10 NA
14 6 6
15 1 1
16 11 NA
17 18 NA
18 15 NA
19 2 2
20 12 NA
这虽然不是最有效的,但却给了我正确的结果。我仍然认为有一种比使用循环更有效的方法。非常感谢您的帮助。