Нахождение заполняемости - PullRequest
0 голосов
/ 21 июня 2019

Я смотрю на набор данных, где у меня есть компании, и какие там цены на несколько недель.Если значение пустое / пустое, то это из-за того, что дом забронирован и, следовательно, цена недоступна.

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

sum(D1$Company=='dc' & D1$`Price week 24`== " ") / sum(D1$Company=='dc' & D1$`Price week 24`!="-10")

Где я беру сумму из одной компании, где дома забронированы (цена не указана, следовательно, пуста / пуста), и делится на общую сумму.Нет значений -10 ..

Мои данные могут выглядеть следующим образом (извините за плохое зрение, но я не могу вставить скриншот).Я получил еще несколько недель и несколько компаний.Я мог видеть новый столбец с именем «Неделя занятости 24», где он содержит значение в соответствии с компанией в строке 1.

РЕДАКТИРОВАТЬ : данные

# dput(DF1)
structure(list(Company = 1:6, Price_week_24 = structure(c(1L, 
1L, 1L, 1L, 1L, 1L), .Label = "ns", class = "factor"), Price_week_25 = c(1639L, 
860L, NA, NA, 399L, 645L), Price_week_26 = c(NA, 860L, NA, NA, 
399L, NA), Price_week_27 = c(NA, 1010L, 1010L, 699L, 399L, 1010L
), Price_week_28 = c(NA, 1399L, NA, 1129L, 640L, 1399L)), class = "data.frame", row.names = c(NA, 
-6L))

df $ busyancy_rate <- apply (df [, 2: 6], 1, function (x) sum (x> 0, na.rm = TRUE) / length (x)) Решить много проблем, но не все из них.Я хочу получить ценность для каждой отдельной компании, а не общую сумму для всех них.

Я с нетерпением жду помощи.Спасибо.

С наилучшими пожеланиями

1 Ответ

1 голос
/ 21 июня 2019

Вот как были созданы данные, чтобы поделиться примером. Я включил один пример решения, используя base:

#Create a reprex
df <- read.table(text =
"1 ns     1639            ' '             ' '             ' '
2 ns      860             860             1010            1399
3 ns      ' '             ' '             1010            ' '
4 ns      ' '             ' '             699             1129
5 ns      399             399             399             640
6 ns      645             ' '             1010            1399")

names(df) <- c("rows", "Company", paste0("Price_week_", 24:27) )

# to share the data
dput(df)

# Using base R
df$occupancy_rate <- apply(df[,2:6], 1,function(x) sum(x>0, na.rm = TRUE)/length(x))
...