Преобразовать вес в килограмм на основе столбца единиц - PullRequest
0 голосов
/ 19 марта 2020

У меня очень большой набор данных, который включает в себя два столбца для весов и весовых единиц. Теперь я хочу преобразовать все веса в килограммы на основе того, что отображается в столбцах единиц. вот как выглядит фрейм данных


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

Пожалуйста, помогите

Ответы [ 3 ]

2 голосов
/ 19 марта 2020

Использование 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
1 голос
/ 19 марта 2020

Вы можете получить доступ к граммовым значениям и заменить их, нарезав на x$Units == "Grams" значения в x$weights, а затем просто заменив «Граммы» на «Килограммы». Примерно так:

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

В качестве альтернативы вы можете использовать dplyr mutate с ifelse:

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
0 голосов
/ 19 марта 2020

База R:

kilo_df <- within(df, {weights <- ifelse(Units != "Kilograms", weights / 1000, weights)
                       Units <- as.character("Kilograms")})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...