You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计R数据框中amenities列每行包含的设施数量

结论

这种方法仅在所有设施名称都不包含英文逗号的前提下成立,否则会出现计数偏高的错误,更稳妥的方法是直接解析JSON格式的字段内容后统计长度,避免边界问题。


两种实现方案

方案1:解析JSON统计(推荐,无边界问题)

你拿到的amenities列是JSON数组格式的字符串存为了因子类型,如果某个设施的名称本身就包含英文逗号(比如部分标注会写"Indoor fireplace, firewood included"这类组合设施名),统计逗号的方法就会把单个设施误算成多个,因此推荐用JSON解析的方法计算:

# 加载依赖包
library(jsonlite)
# 先把因子转成字符,再逐个解析JSON数组统计长度
airbnbT$amenity_count <- sapply(as.character(airbnbT$amenities), function(x) {
  length(fromJSON(x))
})

该方法得到的计数完全匹配实际设施数量,不需要考虑字段内容里的特殊符号问题。

方案2:统计逗号计算(仅适用于无逗号的场景)

如果你的数据集已经确认所有设施名称均不含英文逗号,也可以用统计逗号后加1的方法快速计算:

library(stringr)
airbnbT$amenity_count <- str_count(as.character(airbnbT$amenities), ",") + 1

你给出的示例中27个设施对应26个逗号,加1刚好得到正确结果。


内容的提问来源于stack exchange,提问作者Noor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:36:03