首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改数据框的单位和值

更改数据框的单位和值
EN

Stack Overflow用户
提问于 2019-01-15 23:39:42
回答 2查看 1.1K关注 0票数 0

我有一个数据框架,里面有水中化合物浓度及其目标值。对于某些化合物,注册值的单位不同于其最大值。

我想将目标转换为相同的值单位。举个例子,我有这个:

代码语言:javascript
复制
  Value    Dimension  Target   Unit
A  0.001    ug/L       12     ng/L
B  0.1      ug/L       1      ug/L
C  0.25     ug/L       1      ng/L

我想要得到:

代码语言:javascript
复制
   Value    Dimension  Target   Unit
A  0.001    ug/L       0.012     ug/L
B  0.1      ug/L       1         ug/L
C  0.25     ug/L       0.001     ug/L

1 ug/L = 1000 ug/L

我如何在R中做到这一点?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-15 23:47:23

您可以使用一个嵌套的ifelse语句来捕获所有3个场景(相同,从ngug,从ugng)

代码语言:javascript
复制
ifelse(df$Dimension == df$Unit, df$Target, 
       ifelse(df$Dimension != df$Unit & grepl('ug', df$Dimension), df$Target / 1000, 
                                                                        df$Target * 1000))

#[1] 0.012 1.000 0.001
票数 0
EN

Stack Overflow用户

发布于 2019-01-15 23:44:26

您可以使用ifelse。如果dat是您提供的data.frame,那么下面这样的代码应该是有效的:

代码语言:javascript
复制
dat[, "Target"] <- ifelse(dat[,"Unit"]=="ng/L", dat[,"Target"]/1000, dat[,"Target"])

如果您有两个以上的不同单元,则需要嵌套ifelse调用或连续调用ifelse

请注意,ifelseif的矢量化版本,它一次处理整个列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54202137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档