我有一個數據框z
,我想基於兩個舊列z
的值創建新列。下面是該過程:在R中生成具有多個條件的列值
>z<-cbind(x=1:10,y=11:20,t=21:30)
> z<-as.data.frame(z)
>z
x y t
1 1 11 21
2 2 12 22
3 3 13 23
4 4 14 24
5 5 15 25
6 6 16 26
7 7 17 27
8 8 18 28
9 9 19 29
10 10 20 30
#產生列q
,其等於列的值t
倍4如果x=3
和用於x
其他值,它等於t
列的值。
for (i in 1:nrow(z)){
z$q[i]=if (z$x[i]==4) 4*z$t[i] else z$t[i]}
但是,我的問題是,我想申請多個條件:
例如,我想是這樣的:
(If x=2, q=t*2; x=4, q=t*4; x=7, q=t*3; for other it is equal to t)
> z
x y t q
1 1 11 21 21
2 2 12 22 44
3 3 13 23 23
4 4 14 24 96
5 5 15 25 25
6 6 16 26 26
7 7 17 27 81
8 8 18 28 28
9 9 19 29 29
10 10 20 30 30
我如何使用第二輸出循環或其他方法?
另外,最好使用'ifelse'而不是'for'循環。而不是'(for i in 1:length(x))y [i] < - if ... else ...'你可以做'y < - ifelse(邏輯,真,假)' –
@Señor:根據你的建議,我發佈了自己問題的答案。謝謝! – Metrics