我想根據施加在原始變量上的條件創建一個新變量。比方說,當我創建一個新變量時出了什麼問題?
- 原始變量,「無功」,是一個矢量由一個隨機抽樣的1 ... 20,和
- 新變量「newvar」設置爲丟失時,原來的「 VAR」大於10,並且等於‘VAR’何時‘VAR’小於10
的下面描述的代碼的程序,
> 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行中,「newvar」分別在第2行和第3行中分配了「var」的值。你能告訴我哪裏出了問題嗎?
> 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
這雖然不是最有效的,給了我正確的結果。我仍然認爲比使用循環更有效。您的幫助將不勝感激。
它的工作完美,感謝! – TCL