首页 > 解决方案 > 根据一列中的条件和另一列中的值在 r 中生成一个新变量

问题描述

我有一个数据框,其中包含有关主题、高度和高度单位的数据

subject <- c(1,2,3,4)
height <- c(100, 90, 56, 64)
height_unit <- c("cm", "cm", "inches", "inches")
complete_file <- data.frame(subject, height, height_unit)

本质上,我想要做的是在 height_unit 等于英寸的任何时候将高度列乘以 2.54。这是我到目前为止所尝试的:

vital_signs_clean <- vital_signs_clean %>%
     group_by(subject_id) %>%
     mutate(height = if(n_distinct(Height_Units == "inches", na.rm = TRUE) == 1), *2.54)

为此,我在代码中收到一条错误消息,指出“意外的 'else'”。这是最好的方法还是有更好的建议?

标签: rdplyr

解决方案


这应该可以解决问题:

library(dplyr)
complete_file %>% 
  mutate(height = ifelse(height_unit == "inches", height * 2.54, height))

输出:

  subject height height_unit
1       1 100.00          cm
2       2  90.00          cm
3       3 142.24      inches
4       4 162.56      inches

推荐阅读