根据单位栏将重量转换为千克

  • 本文关键字:千克 转换 单位 r
  • 更新时间 :
  • 英文 :


我有一个非常大的数据集,其中包括两列权重和权重单位。现在我想根据单位列上显示的内容将所有权重转换为千克。以下是数据帧看起来像的样子


x <- data.frame("SN" = 1:3, "weights" = c(2.1,1500, 2500), "Units" = c("Kilograms","Grams", "Grams"))

所以我想写一个代码,看看单位列,一旦它看到克,它就会自动将重量列中的重量转换为千克

以下是的预期结果

x <- data.frame("SN" = 1:3, "weights" = c(2.1,1.5, 2.5), "Units" = c("Kilograms","Kilograms", "Kilograms"))
x

请帮助

您可以通过对x$weights中的值进行x$Units == "Grams"切片来访问和替换克值,然后将"克"替换为"千克"。类似这样的东西:

x$weights[x$Units == "Grams"] <- x$weights[x$Units == "Grams"] / 1000
x$Units <- "Kilograms"

或者,您可以将dplyr的mutateifelse:一起使用

library(dplyr)
x %>% 
mutate(weights = ifelse(Units == "Grams", weights / 1000, weights),
Units = "Kilograms"
)

输出:

SN weights     Units
1  1     2.1 Kilograms
2  2     1.5 Kilograms
3  3     2.5 Kilograms

使用data.table

library(data.table)
setDT(x)[Units == "Grams",c("weights", "Units"):=list(weights/1000, "Kilograms")]
x
#   SN weights     Units
#1:  1     2.1 Kilograms
#2:  2     1.5 Kilograms
#3:  3     2.5 Kilograms

基本R:

kilo_df <- within(df, {weights <- ifelse(Units != "Kilograms", weights / 1000, weights)
Units <- as.character("Kilograms")})

最新更新