我有一个如下的矩阵:
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%。 / p>
提前感谢您的回答!
答案 0 :(得分:2)
您的变量是各种类,因此数据框比矩阵更有意义。
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