R语言plyr包count函数输出异常求助:结果不符合预期
解决plyr::count()统计结果不符合预期的问题
问题原因
你遇到的问题核心在于调用plyr::count()时,错误地给目标列名name加上了引号。这会让函数把字符串"name"当成要统计的常量值,而不是识别为数据框中的列名——最终它生成了一个全是"name"的临时列,统计出8条相同结果,和你的预期不符。
解决方法
以下几种写法都能正确实现按name列统计频数的需求:
- 直接传入不带引号的列名(最常用的写法):
count(bevs, name)
- 显式指定
vars参数(传入字符串):
count(bevs, vars = "name")
- 使用公式语法:
count(bevs, ~name)
运行以上任意代码,都会得到你预期的输出:
name freq 1 Bill 4 2 Llib 4
额外优化建议
你当前创建bevs数据框的方式可以更简洁,避免不必要的类型转换:
bevs <- data.frame( name = rep(c("Bill", "Llib"), 4), drink = rep(c("coffee", "tea", "cocoa", "water"), 2), cost = 1:8, stringsAsFactors = FALSE # R版本<4.0时建议添加,防止字符列被转成因子 )
这样cost列会直接是整数类型,不需要后续再用as.integer()转换。
内容的提问来源于stack exchange,提问作者Sweety Rani
相关产品推荐
相关产品推荐

