【发布时间】:2021-01-23 13:29:29
【问题描述】:
我正在尝试编写一些更复杂的代码。我有一个问题,我有一个解决方案,但我想增加代码的灵活性。
输入数据(d):
ID Height_cm Height_m Weight_kg Weight_lb
1 180 70
2 165 120
3 1.8 80
4 100 60
5 190 200
6 1.7 100
我想将身高转换为厘米,体重转换为公斤,所有这些都在这样的一列中:
ID Height Weight
1 180 70
2 165 54
3 180 80
4 100 45
5 190 90
6 170 100
我有一个解决方案,但它是硬编码的:
library(tidyverse)
d$Height <- NA
d$Weight <-NA
d$Height <- ifelse(!is.na(d$Height_cm), d$Height_cm, d$Height_m * 0.01)
d$Weight <- ifelse(!is.na(d$Weight_kg), d$Weight_kg, d$Weight_lb * 0.45)
d <- d %>% select(ID, Height, Weight)
我想要更复杂并接受一个输入文件(如下)并根据该数据框进行转换。结果将是相同的,但它使用这种转换 df 来实现相同的事情:
Transformation_d:
marker unit new_col_name transformation
Height_cm centimetre Height 1
Height_m metre Height 0.01
Weight_kg kilogram Weight 1
Weight_lb pounds Weight 0.45
这就是我卡住的地方......我会很感激一些指导。
放轻松,我是 R 新手!
【问题讨论】: