繁体   English   中英

如何根据其他两列的值在 R 中创建新变量?

[英]How to create a new variable in R based on values from two other columns?

我有一个如下所示的数据集:

当前数据集

在两个时间点,每位患者的双耳都有四行。 我想创建一个新变量,该变量取自化疗剂量 1 的第一行和化疗剂量 2 的第二行。我想要的输出是这样的:

期望的输出

如何在 R 中创建这样的变量?

您可以使用if_else()简单地mutate() ) 吗?

library(dplyr)

df %>% mutate(NEW_VARIABLE = if_else(Time_Point=="C1", Chemo_Dose1,Chemo_Dose2))

输出:

        Ear Study_ID Chemo_Dose1 Chemo_Dose2 Time_Point NEW_VARIABLE
1  Left Ear  CF41853        1200         300         C1         1200
2  Left Ear  CF41853        1200         300       Post          300
3 Right Ear  CF41854        1200         300         C1         1200
4 Right Ear  CF41854        1200         300       Post          300

输入:

structure(list(Ear = c("Left Ear", "Left Ear", "Right Ear", "Right Ear"
), Study_ID = c("CF41853", "CF41853", "CF41854", "CF41854"), 
    Chemo_Dose1 = c(1200, 1200, 1200, 1200), Chemo_Dose2 = c(300, 
    300, 300, 300), Time_Point = c("C1", "Post", "C1", "Post"
    )), class = "data.frame", row.names = c(NA, -4L))

这会回答你的问题吗?

### 1- data simulation
df <- data.frame(dose1=rep(1200, 4), dose2=rep(300, 4), time=c("C1", "Post", "C1", "Post"))

### 2- computing new variable based on time endpoint
df$newVariable <- ifelse(df$time=="C1", df$dose1, df$dose2)

使用fifelsedata.table选项(感谢@langtang 创建数据):

library(data.table)
setDT(df)[, new := fifelse(Time_Point == "C1", Chemo_Dose1, Chemo_Dose2)]
df

输出:

         Ear Study_ID Chemo_Dose1 Chemo_Dose2 Time_Point  new
1:  Left Ear  CF41853        1200         300         C1 1200
2:  Left Ear  CF41853        1200         300       Post  300
3: Right Ear  CF41854        1200         300         C1 1200
4: Right Ear  CF41854        1200         300       Post  300

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM