R语言 是否根据一列中的字符串条件转换另一列中的值?

oprakyz7  于 2023-03-27  发布在  其他
关注(0)|答案(2)|浏览(120)

我有一个数据集,看起来像这样:

structure(list(Variable = c("Temperature Farenheit", "Temperature Farenheit", 
"Temperature Celcius "), Value = c(67L, 77L, 32L)), class = "data.frame", row.names = c(NA, 
-3L))

我想将单位标准化,以便所有值都以摄氏度表示。如果Variable包含单词“Farenheit”,我想将相应的值转换为摄氏度。无需更改已经表示摄氏度的值。
例如,第一行表示华氏温度(67 F),因此我想将其转换为C:
(67°F − 32)× 5/9 = 19.4444

jc3wubiy

jc3wubiy1#

如果你的dataframe被称为df:

df[grep("Farenheit", df$Variable), "Value"] <- 
   (df[grep("Farenheit", df$Variable), "Value"] - 32) * 5 / 9

做工作

bkhjykvo

bkhjykvo2#

下面是一个函数/dplyr选项:

library(dplyr)
library(stringr)

df <- structure(list(Variable = c("Temperature Farenheit", "Temperature Farenheit", 
                            "Temperature Celcius "), Value = c(67L, 77L, 32L)), class = "data.frame", row.names = c(NA, 
                                                                                                                    -3L))

conversion <- function(data) {
  data %>% 
    mutate(Value = ifelse(str_detect(Variable, "Farenheit"), (Value - 32) * 5/9, Value),
           Variable = "Temperature Celcius")
}

conversion(df)
#>              Variable    Value
#> 1 Temperature Celcius 19.44444
#> 2 Temperature Celcius 25.00000
#> 3 Temperature Celcius 32.00000

相关问题