Замените значения для определенных строк из другой строки, используя условие - PullRequest
0 голосов
/ 02 июля 2018
1)PatientID 2)Review_year 3)CurrentHealthstate  4)Healthstateprevious   

1   2005    2   NA
2   2006    3   NA
3   2007    3   NA
4   2008    3   NA
5   2009    3   NA
6   2010    3   NA
7   2011    3   NA
8   2012    3   NA
9   2013    3   NA

Я хочу понять, как можно заменить значения NA в 4)Healthstateprevious значениями 3)CurrentHealthstate в предыдущем 2)Review_year.

например.

1   2005    2   NIL
2   2006    4   2
3   2007    3   4
4   2008    2   3
5   2009    1   2
6   2010    3   1
7   2011    4   3
8   2012    5   4
9   2013    3   5

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Способ достижения этого состоит в использовании поднабора:

data$Healthstateprevious[-1] <- data$CurrentHealthstate[-ncol(data)]
data
  PatientID Review_year CurrentHealthstate Healthstateprevious
1         1        2005                  2                  NA
2         2        2006                  4                   2
3         3        2007                  3                   4
4         4        2008                  2                   3
5         5        2009                  1                   1
6         6        2010                  3                   3
7         7        2011                  4                   4
8         8        2012                  5                   5
9         9        2013                  3                   3

данные:

data <- data.frame(
  PatientID           = 1:9, 
  Review_year         = 2005:2013, 
  CurrentHealthstate  = c(2, 4, 3, 2, 1, 3, 4, 5, 3), 
  Healthstateprevious = NA
)
0 голосов
/ 02 июля 2018
df <- read.table(text = "1   2005    2   NIL
2   2006    4   2
3   2007    3   4
4   2008    2   3
5   2009    1   2
6   2010    3   1
7   2011    4   3
8   2012    5   4
9   2013    3   5")

df %>% 
  mutate(newvar = lag(V3, 1))

  V1   V2 V3  V4 newvar
1  1 2005  2 NIL     NA
2  2 2006  4   2      2
3  3 2007  3   4      4
4  4 2008  2   3      3
5  5 2009  1   2      2
6  6 2010  3   1      1
7  7 2011  4   3      3
8  8 2012  5   4      4
9  9 2013  3   5      5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...