r - 根据一列中的条件和另一列中的值在 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'”。这是最好的方法还是有更好的建议?
解决方案
这应该可以解决问题:
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
推荐阅读
- azure - 无法关闭 Azure 应用服务上的 AlwaysOn 功能
- python - 如何获取我在 Telethon 中加入的频道列表?
- javascript - 抓取 URL 中的元素的挑战,可能是由于 javascript?
- pandas - 如果机器学习中可以有不同的周期,如 30 和 31,如何转换像月这样的循环特征
- javascript - 了解 find() 方法
- php - 打印复杂的 php 对象
- spring-boot - Spring Boot H2 控制台返回 404
- arrays - 冒泡排序用我什至没有输入的另一个值替换一个值
- javascript - 画布事件监听器切换参数状态
- spring - Spring Security 基于用户的权限?(不基于角色)