r - 查找入住率
问题描述
我正在查看我有公司的数据集,以及几周的价格。如果该值为空白/空,则表示房屋已被预订,因此没有可用的价格。
我有这个工作的代码,但如果可能的话,我想一次完成所有公司和几周。然后我希望它成为数据的一部分。
sum(D1$Company=='dc' & D1$`Price week 24`== " ") / sum(D1$Company=='dc' & D1$`Price week 24`!="-10")
我将其中一家公司的总和计算在内(因此没有价格,因此为空白/空),然后除以总数。没有值 -10..
我的数据可能看起来像这样(抱歉,视力不好,但我无法粘贴屏幕截图)。我还有几个星期和几家公司。我可以看到一个名为“Occupancy week 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$occupancy_rate <- apply(df[,2:6], 1,function(x) sum(x>0, na.rm = TRUE)/length(x)) 解决许多问题,但不是全部。我希望为每家公司提供价值,而不是为所有公司提供总价值。
我期待得到一些帮助。谢谢你。
此致
解决方案
以下是创建数据以共享示例的方式。我已经包含了一个示例解决方案,使用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))
推荐阅读
- memory - 在 ABAP 会话之间传递结构化数据?
- python - Python 迭代 webelements 并添加到 DF
- python - pipenv install 给出 Failed to load paths 错误
- reactjs - 传递多个孩子作为道具
- nuxt.js - NuxtJs 在生成的静态输出上自定义第一个加载页面
- amazon-web-services - 如何在 Athena/Presto 中打印特殊字符
- intellij-idea - 如何在 IntelliJ 中以不同用户身份运行 JAR 应用程序?
- openssl - 使用 window.crypto.subtle.decrypt 在浏览器中解密 AES 加密图像
- typescript - IAB.close() 已调用但已关闭
- javascript - 功能 NavTo 工作,但让以前的视图显示在 SAPUI5