我在舊數據框中添加了一個新變量(全零)。現在在這個新的數據框中,我必須將值從0更改爲1,以滿足條件的觀測值。條件在另一個變量上。有條件地更改數據幀中的值
例如,我在這個新的數據框中有變量x
,y
,z
。 z
是我剛剛添加的新變量,它們都是零。如果y=some number a
,我想要z=1
。
我嘗試使用一個簡單的for循環來實現這一點,但我不知道我在哪裏做錯了。
for (i==999 in data$y) {
{data$z==1}
}
我在舊數據框中添加了一個新變量(全零)。現在在這個新的數據框中,我必須將值從0更改爲1,以滿足條件的觀測值。條件在另一個變量上。有條件地更改數據幀中的值
例如,我在這個新的數據框中有變量x
,y
,z
。 z
是我剛剛添加的新變量,它們都是零。如果y=some number a
,我想要z=1
。
我嘗試使用一個簡單的for循環來實現這一點,但我不知道我在哪裏做錯了。
for (i==999 in data$y) {
{data$z==1}
}
好像你正在嘗試設置data$z
爲1時data$y
是999,並將其設置爲0,否則。
data$z = as.numeric(data$y == 999)
,如果你給了我們一個reproducible example它會幫助:這可以實現。我不是創建一個:
df = data.frame(x = sample.int(5, 5),
y = sample.int(5, 5),
z = rep(0, 5))
df
x y z
1 3 3 0
2 4 5 0
3 2 1 0
4 5 4 0
5 1 2 0
你的問題說你試圖當y
滿足某些條件改變df$z
值。在R中,這樣做的一般方法是使用下標。我強烈推薦John Cook的博客文章5 Kinds of Subscripts in R來幫助理解這一點; R中的這些東西中的一種與大多數其他語言的工作方式不同,但是當你掌握它時,它變得非常方便。
因此,在這種情況下:
# where is y==1?
df$y == 1
[1] FALSE FALSE TRUE FALSE FALSE
如果我們要設置的值,我們可以養活這導致邏輯載體到表達的行索引像df[row, column]
df[df$y == 1, ]
x y z
3 2 1 0
而「在該行中的「z」列是東西,只是類型
df[df$y == 1, "z"] = 999
df
x y z
1 3 3 0
2 4 5 0
3 2 1 999
4 5 4 0
5 1 2 0