我對R很新,有一些工作經驗,但不是很流利。 我最近在一個大數據集上使用了一個數據集,並使用R 3.3.1來處理這個數據集。 在數據框(X)中,有一列標誌類型和2列數字類型,即高度和重量。多個然後條件在一個單一的IF循環在R
的值是這樣的:
h w hw_flag
5.874 60.5478 0
4.874 40.5478 0
3.874 10.5478 1
2.999 6.5478 1
8.874 90.5478 0
5.111 50.5478 1
6.554 65.5478 0
我已經初始化了兩個新的列H_1和W_1爲0
X$h_1 <- 0
X$w_1 <- 0
現在,我想的是,只要hw_flag爲1,那麼h_1和w_1應分別獲得從h和w複製的條目,然後,一旦將值複製到h_1和w_1,相應的h和w值就會變爲0.我希望在一個循環中完成所有操作。
現在,我必須寫4路這4個steps.The代碼,我的工作是如下,它給我所需要的輸出我想有:
for(i in 1:nrow(X)){
if(X$hw_flag[i] == '1')
X$h_1[i] <- X$h[i];
}
for(i in 1:nrow(X)){
if(X$hw_flag[i] == '1')
X$w_1[i] <- X$w[i];
}
for(i in 1:nrow(X)){
if(X$hw_flag[i] == '1')
X$h[i] <- 0;
}
for(i in 1:nrow(X)){
if(X$hw_flag[i] == '1')
X$w[i] <- 0;
}
Output :
h w hw_flag h_1 w_1
5.874 60.5478 0 0 0
4.874 40.5478 0 0 0
0 0 1 3.874 10.5478
0 0 1 2.999 6.5478
8.874 90.5478 0 0 0
0 0 1 5.111 50.5478
6.554 65.5478 0 0 0
我試圖把所有在一個循環,但肯定是我面臨的問題是,第一步得到按預期執行,而第二步不能正常工作。我試着放下;並通過回車換行,但仍然沒有成功。 我嘗試的代碼是以下並將其複製的H值H_1但在接下來的步驟中,它並沒有照搬值w與W_1:
for(i in 1:nrow(X)) {
if(X$hw_flag[i] == '1')
X$h_1[i] <- X$h[i];
X$w_1[i] <- X$w[i];
X$h[i] <- 0;
X$w[i] <- 0;
}
所以,我基本上想知道我怎麼能爲相同的IF-是塊放置多個然後語句。
嘗試周圍的命令由'if'語句在大括號中運行,以同樣的方式爲你爲'for'循環完成了。 – rosscova
你不需要在R. –
中使用';'謝謝@rosscova,我不知何故錯過了這些大括號。 – PD1