微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在R中其他条件下创建新变量

如何解决如何在R中其他条件下创建新变量

我有以下数据框:

ID   Measurement A      Measurement  B     Date of Measurements A and B   Date of Measurement C
1    23                 24                 12                             16
1    22                 23                 12                             15
1    24                 22                 12                             17
1    21                 20                 12                             11
1    27                 29                 12                             17

这是使用1个标识符(ID)的示例,实际上我有数千个。

我想创建一个封装的变量

”,如果此ID的度量A或度量B大于xxx,则在度量C日期之前两次以上,然后指定 它们在名为new_var的新列中为1。

到目前为止,我删除了所有的测量日期A和B>测量日期C

measurements <- subset(measurements,dateofmeasurementsAandB < dateofmeasurementC)

然后在ifelse语句的截止处添加

measurements$new_var<- ifelse(measurements$measurementA >= xxx | measurements$measurementB >= xxx,1,0)

但是不能考虑“多次使用”(从示例中可以看到,每个ID有多个行/场合)

任何帮助都是很好的,尤其是如果可以更简单地完成它!

解决方法

如果我不理解您的要求,我想我会使用dplyr的count函数:

#Starting from your dataframe
library(tidyverse)
df <- measurements %>%
         filter(dateofmeasurementsAandB < dateofmeasurementC,measurements$measurementA >= xxx | measurements$measurementB >= xxx)

此数据框仅应具有您要满足的条件,因此现在我们对它们进行计数并过滤结果:

df <- df %>% count(ID) %>% filter(n >= 2)

向量 df $ ID 现在应该只包含已被测量多次的ID,然后您可以轻松地将其反馈到测量数据框中,但是我偏爱这个:

measurements$new_var <- 0
measurements[measurements$ID %in% df$ID]$new_var <- 1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。