【问题标题】:Conditional change of a column in a data frame数据框中列的条件更改
【发布时间】:2020-07-01 17:44:29
【问题描述】:

如果已经在其他地方问过这个问题,请提前道歉,但我尝试了不同的尝试,但到目前为止没有任何效果。

我有一个数据框Data,其中包含空气污染的测量值。 “Measuring.Unit”和“Uncertainty.Unit”列显示大部分测量值以“mol/L”表示,但也有一些以“mol/mL”表示。

head(Data)
     Locality.Name  Chemical  Concentration  Measuring.Unit Uncertainty Uncertainty.Unit 
1        xxxx       NH3       0.065          mol/L         0.010          mol/L  
2        xxxx       CO        0.015          mol/L         0.004          mol/L
3        xxxx       CO2       0.056          mol/L         0.006          mol/L
4        xxxx       O3        0.67           mol/mL        0.010          mol/mL
5        xxxx       H2SO4     0.007          mol/L         0.0008         mol/L
6        xxxx       NO        0.89           mol/mL        0.08           mol/mL                                       

在开始任何分析之前,我想使用一个简单的函数将每个以 mol/mL 表示的值更改为 mol/L,当然,还要更改“mol/L”中的相关字符“mol/mL”。这应该是这样的(但我想有很多简单的方法使用dplyrtidyverse) :

# First step
      if (Data$Measuring.Unit == "mol/mL")  {Data$Concentration <- Data$Concentration * 1000 } 
       else {Data$Concentration <- Data$Concentration } 

       if (Data$Uncertainty.Unit == "mol/mL")  {Data$Uncertainty <- Data$Uncertainty * 1000 } 
       else {Data$Uncertainty <- Data$Uncertainty} 

# Second step
Data$Measuring.Unit[Data$Measuring.Unit == 'mol/mL'] <- 'mol/L'
Data$Uncertainty.Unit[Data$Uncertainty.Unit == 'mol/mL'] <- 'mol/L'

【问题讨论】:

    标签: r dataframe if-statement


    【解决方案1】:

    你可以试试:

    Data$Concentration <- ifelse(Data$Measuring.Unit == "mol/mL",Data$Concentration * 1000,Data$Concentration)
    
    Data$Uncertainty <- ifelse(Data$Uncertainty.Unit == "mol/mL",Data$Uncertainty * 1000,Data$Uncertainty)
    

    这一步看起来不错:

    Data$Measuring.Unit[Data$Measuring.Unit == 'mol/mL'] <- 'mol/L'
    Data$Uncertainty.Unit[Data$Uncertainty.Unit == 'mol/mL'] <- 'mol/L'
    

    if() 用于值,而ifelse() 用于数据帧的矢量化。

    【讨论】:

      猜你喜欢
      • 2020-12-01
      • 2023-02-21
      • 2021-03-08
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 2019-06-21
      • 2021-11-10
      • 1970-01-01
      相关资源
      最近更新 更多