R: заменить 2 наблюдения их средним - PullRequest
0 голосов
/ 27 апреля 2020

Здесь у меня есть фрейм данных из 5028 наблюдений с 6 переменными, среди которых меня интересуют только даты и цены единиц.

[1] "datesold"     "postcode"     "price"        "propertyType" "bedrooms"    
[6] "rate" 
> head(data_u,10)

                 datesold postcode  price propertyType bedrooms        rate
24553 2007-06-27 00:00:00     2606 300000         unit        2  0.00000000
24554 2007-07-05 00:00:00     2611 300000         unit        2  0.60000000
24555 2007-07-19 00:00:00     2607 480000         unit        3 -0.25000000
24556 2007-07-20 00:00:00     2604 360000         unit        2  0.06944444
24557 2007-08-07 00:00:00     2617 385000         unit        3  0.05194805
24558 2007-08-09 00:00:00     2913 405000         unit        3  0.30617284
24559 2007-09-05 00:00:00     2612 529000         unit        2 -0.24385633
24560 2007-09-07 00:00:00     2602 400000         unit        2  0.22500000
24561 2007-09-20 00:00:00     2612 490000         unit        3 -0.55102041
24562 2007-09-24 00:00:00     2611 220000         unit        2  0.54545455

Однако Есть дома, которые продаются в одни и те же даты по разным ценам. Поэтому я хотел бы расположить наблюдения в те же даты, вычислить средние цены для каждой даты и заменить наблюдения на эту единственную.

Я думал о двойном для-l oop с ifelse ( ) внутри. Но у меня проблемы с реализацией идеи. Любая помощь приветствуется!

Ответы [ 3 ]

1 голос
/ 28 апреля 2020

Попробуйте:

aggregate(price ~ datesold, data = data_u, FUN = mean, na.rm = TRUE)

Это вычислит среднее значение price для каждого уникального значения datesold и отобразит результаты в кадре данных, где каждая строка соответствует значению datesold. Я установил необязательный аргумент na.rm на TRUE, потому что если price имеет пропущенные значения, то среднее значение price для подгрупп datesold с хотя бы одной NA также вернет NA. При na.rm = TRUE учитываются только наблюдения с известным price, что гарантирует получение среднего значения price для каждого datesold.

0 голосов
/ 27 апреля 2020

Вам это нужно?

library(dplyr)

data_u %>%
  group_by(date = as.Date(lubridate::ymd_hms(datesold))) %>%
  mutate(mean_price = mean(price, na.rm = TRUE))
0 голосов
/ 27 апреля 2020

Простой способ сделать это будет:

library(tidyverse)
Temp <- data_u %>% group_by(datesold) %>% summarise(Mean_Price = mean(price))
data_u <- data_u %>% left_join(Temp)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...