Использование цикла для одной переменной, чтобы сохранить значение второй переменной в третьей переменной в R - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть фрейм данных с обоими кодами диагноза (dx #) и примечанием того, присутствовал ли этот диагноз до зарегистрированного приема (dx # poa)

Например, dx1=443 и dx1poa =="Y", указывающие, что dx1 присутствовал до поступления.

То, что я хочу сделать, это циклически проходить каждое наблюдение, и если dx#poa=="Y", тогда я хочу сохранить значение dx# в другой переменной com1, иначе установить com#=="" или com#==NA

Ниже приведен пример фрейма данных с 4 наблюдениями, который имитирует больший набор данных, над которым я работаю.

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

и хочу

> 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

1 Ответ

0 голосов
/ 06 сентября 2018

Учтите это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...