根据一列中的值,我想要一个新列中的值。当访问1时,我希望在"new“列中使用7,当访问2时,我希望在"new”列中使用8,当访问3时,我希望在"new“列中使用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
发布于 2019-10-10 07:06:02
如果您正在寻找适用于一般情况的答案:
require(dplyr)
df = df %>%
dplyr::mutate(new = case_when(.$visit == 1 ~ 7,
.$visit == 2 ~ 8,
.$visit == 3 ~ 9))
如果这是你要找的,请告诉我。
发布于 2019-10-10 07:03:53
看起来您只需要在行visit
中添加6
> 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
发布于 2019-10-10 07:01:27
如果您的数字是1、2、3,并且顺序如图所示,则只需在visit
列中添加6即可
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_))
https://stackoverflow.com/questions/58317149
复制相似问题