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
推荐阅读
- java - 在 solr 核心初始化时打开新搜索器时出错
- r - xts 对象上的 Spotvol 计算在设置错误中不断产生 POSIX 和错误
- android - 我的页面中带有背景图片的可点击文本
- sql - 如何使用 Oracle 11g 中的 XMLAGG 函数序列化树数据而不是重复的 XML 标记,嵌套结构?
- microsoft-graph-api - Ms graph SDK:InternalServerError-Failed to execute request
- android - React 本机状态栏样式无法覆盖本机 android 状态栏样式
- oracle-apex-5.1 - 刷新导航菜单而不关闭模式对话框 Oracle Apex 5.1
- ios - NSDateFormatter 费用
- python - 无论大小写如何,对相同的字符进行分组,带空格和不带空格
- ios - 完成处理程序和操作队列