如何在R中检查data frame指定commodity对应unit列取值是否一致
检查指定商品对应单位是否完全一致
针对你的需求,这里提供两种简单的实现方法,适合R语言初学者:
方法一:基础R语法(无需额外安装包)
直接通过筛选+唯一值统计来判断:
- 先筛选出
commodity列值为eggs的所有行:
eggs_data <- df[df$commodity == "eggs", ]
- 统计
unit列的唯一值数量,若数量为1则说明所有单位一致:
length(unique(eggs_data$unit)) == 1
也可以把两步合并成一行代码:
length(unique(df$unit[df$commodity == "eggs"])) == 1
运行后返回TRUE表示所有eggs对应的unit完全一致,返回FALSE则说明存在不同单位。
方法二:使用tidyverse工具包(更直观的数据分析语法)
如果你习惯用tidyverse的链式操作,可以这样做:
- 先加载dplyr包(如果没安装过,先运行
install.packages("dplyr")):
library(dplyr)
- 筛选出eggs的数据,然后汇总判断单位是否一致:
df %>% filter(commodity == "eggs") %>% summarise(all_units_consistent = n_distinct(unit) == 1)
运行结果会生成一个数据框,其中all_units_consistent列的TRUE/FALSE就是判断结果。
针对你提供的示例数据,两种方法都会返回TRUE,因为所有eggs对应的unit都是1.8 kg。
内容的提问来源于stack exchange,提问作者Payam Rahmani
相关产品推荐
相关产品推荐

