如果这个问题已经在其他地方被问到了,请提前道歉,但我已经尝试了不同的尝试,到目前为止都没有成功。
我有一个包含空气污染测量值的数据框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/mL”。这应该是这样的(但我猜使用dplyr或tidyverse有很多简单的方法):
# 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'发布于 2020-07-02 01:50:31
您可以尝试:
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()被矢量化用于数据帧。
https://stackoverflow.com/questions/62682531
复制相似问题