Когда определенное значение в одном столбце, новое значение в новом столбце - PullRequest
1 голос
/ 10 октября 2019

В зависимости от значения в одном столбце я хочу значение в новом столбце. Когда посещение 1, я хочу 7 в столбце «новый», когда посещение 2 я хочу 8 в столбце «новый» и когда посещение 3 я хочу 9 в столбце «новый».

id <- rep(1001:1003, each=3)
visit <- rep(1:3,3)
trt <- rep(c("A","B","C"),3)
df <- data.frame(id,visit,trt)

    id visit  trt
1 1001     1   A
2 1001     2   B
3 1001     3   C
4 1002     1   A
5 1002     2   B
6 1002     3   C
7 1003     1   A
8 1003     2   B
9 1003     3   C

I want it to look like:
    id  visit trt new
1 1001     1   A   7
2 1001     2   B   8
3 1001     3   C   9
4 1002     1   A   7
5 1002     2   B   8
6 1002     3   C   9
7 1003     1   A   7
8 1003     2   B   8
9 1003     3   C   9

Я получил егодалеко, но теперь я не знаю, как продолжить. Кто-нибудь есть руководство, чтобы дать? Спасибо!

df %>%mutate(new=(visit==2))

    id visit trt   new
1 1001     1   A FALSE
2 1001     2   B  TRUE
3 1001     3   C FALSE
4 1002     1   A FALSE
5 1002     2   B  TRUE
6 1002     3   C FALSE
7 1003     1   A FALSE
8 1003     2   B  TRUE
9 1003     3   C FALSE

Ответы [ 3 ]

2 голосов
/ 10 октября 2019

Похоже, вам просто нужно добавить 6 к строке visit?

> df %>% mutate(new=visit+6)
    id visit trt new
1 1001     1   A   7
2 1001     2   B   8
3 1001     3   C   9
4 1002     1   A   7
5 1002     2   B   8
6 1002     3   C   9
7 1003     1   A   7
8 1003     2   B   8
9 1003     3   C   9
2 голосов
/ 10 октября 2019

Если вы ищете ответ, который работает в общих ситуациях:

require(dplyr)

df = df %>% 
  dplyr::mutate(new = case_when(.$visit == 1 ~ 7,
                                .$visit == 2 ~ 8,
                                .$visit == 3 ~ 9))

Дайте мне знать, если это то, что вы искали.

1 голос
/ 10 октября 2019

Если ваши номера 1, 2, 3 и расположены в указанном порядке, вы можете просто добавить 6 к вашему visit столбцу

df$new <- df$visit + 6

Если вы не можете найти какое-либо отношение для обновлениязначения, которые вы можете использовать case_when

library(dplyr)
df %>%
  mutate(new  =case_when(visit == 1 ~ 7, 
                         visit == 2 ~ 8, 
                         visit == 3 ~9, 
                         TRUE ~NA_real_))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...