查找入住率

时间:2019-06-21 10:50:30

标签: r function calculated-columns

我正在查看一个获得公司的数据集,以及数周的价格。如果该值为空白/空,则是由于已预订房屋,因此没有可用价格。

我有正在运行的这段代码,但是我想尽可能地一次和所有公司合作。然后我希望它成为数据的一部分。

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

我将预订一家的公司的总和(没有价格,因此为空白/空),然后除以总数。没有值-10 ..

我的数据可能看起来像这样(很抱歉视力不好,但是我无法粘贴在屏幕截图中)。我还有几个星期和几家公司。 我可以看到一个名为“ 24周的占用时间”的新列,其中包含根据第一行中的公司显示的值。

编辑:数据

# 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 $ occupancy_rate <-apply(df [,2:6],1,function(x)sum(x> 0,na.rm = TRUE)/ length(x)) 解决许多问题,但不能全部解决。我想要每个公司的价值,而不是所有公司的价值。

我期待获得帮助。 谢谢。

最好的问候

1 个答案:

答案 0 :(得分:1)

这里是创建数据以共享示例的方式。我提供了一个使用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))