使用for和if添加基于数据框中其他列的列值 [英] add column values based on other columns in data frame using for and if
本文介绍了使用for和if添加基于数据框中其他列的列值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
id adit diag1 diag2
2 3 4230 2234
3 5 3345 4456
4 6 4567 4467
我想添加其他2列, dse1
和 dse2
使用下面的伪代码:
<$如果diag1包含4267,则dse1 = 1 else否则dse1 = 0
如果diag2包含4567则dse2 = 1否则dse2 = 0
$ c
我用这个:
for (我在1:nrow(dse)){
为(j在3:ncol(dse)){
如果dse [i,j]%在%(4320){dse $ dse1 = 1}
else {dse $ dse1 = 0}
如果dse [i,j]%in%(4567){dse $ dse2 = 1}
else {dse $ dse2 = 0}
}
}
但是这些都不起作用。没有必要使用循环,只需使用 ifelse
,例如
dse = within(dse,{
dse1 = ifelse(diag1 == 4230,1,0)
dse2 = ifelse(diag2 == 4567,1,0)
})
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.
解决方案
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)
})
这篇关于使用for和if添加基于数据框中其他列的列值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文