R - изменить значения в одном столбце, если выполнены условия в других столбцах - PullRequest
0 голосов
/ 04 июля 2018

У меня есть такая матрица:

Area_Code <- as.character(c("Red","Yellow","Orange","Orange","Orange"))
Garden_Size <- as.numeric(c(75,100,50,170,105))
Property_Type <- as.character(c("House","Flat","Bungalow","House","House"))
House_Price <- as.numeric(c(110000,120000,355000,495000,150000))
Matrix <- cbind(Area_Code,Garden_Size,Property_Type,House_Price)

Я хотел бы иметь возможность устанавливать переменные, такие как; Area_Code должен быть оранжевым Размер сада должен быть> 100 Тип недвижимости должен быть "Дом"

Затем я хотел бы увеличить переменную House_Price на некоторую величину - для этого примера скажем, 10% - если эти конкретные условия выполняются для каждой строки.

Я бы хотел, чтобы полученное изменение было сохранено как новая матрица, чтобы у меня была копия старой матрицы и новой обновленной матрицы.

Так что для этого конкретного примера я хотел бы, чтобы код дал результат, что новая матрица идентична старой, за исключением того, что цена двух нижних строк (соответствующих параметрам, указанным выше) увеличилась на 10%.

Заранее спасибо за любые ответы!

1 Ответ

0 голосов
/ 04 июля 2018

Ваша переменная - это различные классы, поэтому кадр данных имеет больше смысла, чем матрица.

Area_Code <- c("Red","Yellow","Orange","Orange","Orange")
Garden_Size <- c(75,100,50,170,105)
Property_Type <- c("House","Flat","Bungalow","House","House")
House_Price <- c(110000,120000,355000,495000,150000)
df <- data.frame(Area_Code, Garden_Size, Property_Type, House_Price)

Здесь, используя dplyr, я проверяю условия и увеличиваю цену дома на 10%, если они выполняются. В противном случае нет изменений.

df2 <- df %>% 
  mutate(House_Price = ifelse(Property_Type == "House" &
                              Area_Code == "Orange" &
                              Garden_Size > 100, 
                              House_Price * 1.1, 
                              House_Price))

Наконец, сравнение между df и df2.

df

#   Area_Code Garden_Size Property_Type House_Price
# 1       Red          75         House      110000
# 2    Yellow         100          Flat      120000
# 3    Orange          50      Bungalow      355000
# 4    Orange         170         House      495000
# 5    Orange         105         House      150000

df2

#   Area_Code Garden_Size Property_Type House_Price
# 1       Red          75         House      110000
# 2    Yellow         100          Flat      120000
# 3    Orange          50      Bungalow      355000
# 4    Orange         170         House      544500
# 5    Orange         105         House      165000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...