我有一个带有诊断代码(dx#)和在记录的入院前是否存在该诊断的注释(dx#poa)的数据框
例如dx1=443
和dx1poa =="Y"
表示dx1在准入之前存在。
我想做的是遍历每个观察值,如果dx#poa=="Y"
,那么我想将dx#
的值保留在另一个变量com1
中,否则设置com#==""
或{ {1}}
下面是一个带有4个观察值的样本数据框,用于模拟我正在处理的较大数据集。
com#==NA
开始
pt<-c(1,2,3,4)
dx1<-c(443, 5521, 6647, 812)
dx2<-c(453, 5431, 779, 6782)
dx1poa <-c("Y","N","N","N")
dx2poa <-c("Y","N","Y","Y")
df<-data.frame(pt, dx1, dx2, dx1poa, dx2poa)
想要
> df
pt dx1 dx2 dx1poa dx2poa
1 1 443 453 Y Y
2 2 5521 5431 N N
3 3 6647 779 N Y
4 4 812 6782 N Y
答案 0 :(得分:1)
考虑一下:
df<-data.frame(pt, dx1, dx2, dx1poa, dx2poa)
df
pt dx1 dx2 dx1poa dx2poa
1 1 443 453 Y Y
2 2 5521 5431 N N
3 3 6647 779 N Y
4 4 812 6782 N Y
df$com1 <- ifelse(df$dx1poa == 'Y', df$dx1, '')
df$com2 <- ifelse(df$dx2poa == 'Y', df$dx2, '')
df
pt dx1 dx2 dx1poa dx2poa com1 com2
1 1 443 453 Y Y 443 453
2 2 5521 5431 N N
3 3 6647 779 N Y 779
4 4 812 6782 N Y 6782