我有癌症数据,每个病人都做了1-4次测量.有些测量做了细胞学判断,有些做了病理学判断,有些两者都做了.

library(dplyr)
library(tibble)

data<-tribble(
  ~record_number, ~tool, ~cytology, ~pathology,
  114, "forceps", "Indeterminate", NA,
  114, "needle", "Non-Malignant", "Malignant",
  114, "lavage", NA, "Indeterminate",
  115, "forceps", NA, "Non-Malignant",
  115, "needle", NA, "Malignant"
)

如果给定主题(RECORD_NUMBER)的either列(细胞学、病理学)中的任何样本(行)出现"恶性",我想创建一个恶性变量(0/1).

任何 idea 都很受欢迎!

desired<-tribble(
  ~record_number, ~tool, ~cytology, ~pathology, ~ Malignant,
  114, "forceps", "Indeterminate", NA, 1,
  114, "needle", "Non-Malignant", "Malignant", 1,
  114, "lavage", NA, "Indeterminate", 1, 
  115, "forceps", NA, "Non-Malignant", 1, 
  115, "needle", NA, "Malignant", 1,
)

我想它将以GROUP_BY(RECORD_NUMBER)开始……但是然后呢?

desired<-data %>%
  group_by(record_number) %>%
  ...?

推荐答案

我们可以用any:

library(dplyr) #> 1.1.0

data %>%
  mutate(Malignant = ifelse(any(cytology == "Malignant" | pathology == "Malignant", na.rm = TRUE), 1, 0), .by=record_number)

  record_number tool    cytology      pathology     Malignant
          <dbl> <chr>   <chr>         <chr>             <dbl>
1           114 forceps Indeterminate NA                    1
2           114 needle  Non-Malignant Malignant             1
3           114 lavage  NA            Indeterminate         1
4           115 forceps NA            Non-Malignant         1
5           115 needle  NA            Malignant             1

R相关问答推荐

如何判断R中一列的值是否在所有其他列中重复?

基于2行删除重复项指定每列要执行的操作

为什么stat_bin在R中的ggplot中显示错误的数字?

DT::可数据的正规表达OR运算符问题

有没有方法将琴弦完全捕捉到R中的多边形?

卸载安装了BRM的模型发出的警告

将模拟变量乘以多个观测结果中的模拟变量

以R中的正确顺序将日期时间字符列转换为posixct

使用strsplit()将向量操作为数据框

删除具有相同标题的tabPanel(shinly)

制作等距离的线串副本

在df中保留原始变量和新变量

比较理论阿尔法和经验阿尔法

仅在Facet_WRAP()中的相应方面包含geom_abline()

您是否可以将组添加到堆叠的柱状图

根据另一列中的值和条件查找新列的值

在gggraph中显示来自不同数据帧的单个值

为什么这个表格格罗布不打印?

以任意顺序提取具有多个可能匹配项的组匹配项

TidyVerse中长度不等的列结合向量