I have a dataframe like this:
id adit diag1 diag2
2 3 4230 2234
3 5 3345 4456
4 6 4567 4467
I would like to add other 2 columns, dse1
and dse2
using the pseudo-code below:
if diag1 contains 4230 then dse1 = 1 else dse1 = 0
if diag2 contains 4567 then dse2 =1 else dse2 = 0
I used this:
for (i in 1 : nrow(dse)){
for (j in 3: ncol(dse)){
if dse[i,j] %in% ("4320"){dse$dse1 = 1}
else{dse$dse1 = 0}
if dse[i,j] %in% ("4567"){dse$dse2 = 1}
else{dse$dse2 = 0}
}
}
But these do not work.
Using apply() method If you need to apply a method over an existing column in order to compute some values that will eventually be added as a new column in the existing DataFrame, then pandas. DataFrame. apply() method should do the trick.
You can extract a column of pandas DataFrame based on another value by using the DataFrame. query() method. The query() is used to query the columns of a DataFrame with a boolean expression.
Select Add Column > Custom Column. Enter "Bonus" in the New column name text box.
No need to use a loop, just use ifelse
, for example
dse = within(dse, {
dse1 = ifelse(diag1 == 4230, 1, 0)
dse2 = ifelse(diag2 == 4567, 1, 0)
})
Don't use the if/else. Go vectorized as in:
dat$dse1 <- as.numeric(dat$diag1 == 4230)
dat$dse2 <- as.numeric(dat$diag2 == 4567)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With