r - 使用“count”时,没有适用于“filter_”的方法应用于“c('double','numeric')”类的对象
问题描述
使用下面的代码,我试图根据“权重”列在每次迭代中每年加权。使用wtd.table
我有以下代码:
wtd.table(result$`it 1`$`year 5`$age,result$`it 1`$`year 5`$gender ,result$`it 1`$`year 5`$district, weights =result$`it 1`$`year 5`$weight )
此输出仅提供年龄和性别加权。它也不包括地区。基于我这样使用的一些目的count(var1, var2, var3 , wt = wt)
:
count(result$`it 1`$`year 5`$age,result$`it 1`$`year 5`$gender,
result$`it 1`$`year 5`$age,
wt = result$`it 1`$`year 5`$weight)
但我得到了这个错误:UseMethod(“count”)中的错误:没有适用于“count”的方法应用于类“c('double','numeric')”的对象。我该如何解决?
这是我的代码:
iter1 <- list(year1 =data.frame(age=c(10,11,12,13), district=c(1,2,3,4),gender=c(1,2,2,1)
,weight=c(12.2,11.3,11.2,10.1)),
year2 =data.frame(age=c(10,11,12,13), district=c(1,2,3,4),gender=c(1,2,2,1),weight=c(12.2,11.3,11.2,10.1)))
iter2 <- list(year1 =data.frame(age=c(10,11,12,13), district=c(1,2,3,4),gender=c(2,2,1,1)
,weight=c(12.2,11.3,11.2,10.1)),
year2 =data.frame(age=c(10,11,12,13), district=c(1,2,3,4),gender=c(2,2,1,1),weight=c(12.2,11.3,11.2,10.1)))
df <- list(iter1 = iter1, iter2 = iter2)
我的预期输出就像 df1
df1<-
district age gender freq
1 10 1 12.2
1 11 1 0.0
1 12 1 0.0
1 13 1 10.1
1 10 2 0.0
1 11 2 11.3
1 12 2 11.2
1 13 2 0.0
解决方案
您可以将嵌套列表组合在一个数据框中,并使用0complete
填充缺失的观察weight
值。
library(tidyverse)
map_df(df, ~bind_rows(.x, .id = 'year'), .id = 'iter') %>%
complete(iter, year, age, district, gender, fill = list(weight = 0))
推荐阅读
- swift - 为什么预处理器可以忽略“-Wobjc-literal-conversion”?
- jsf - 是否可以从后台进程访问 JSF ApplicationScoped bean?
- go - 位桶管道中的 Go mod dep 错误
- php - 本地 wordpress 安装的 Frontity Api 连接问题
- r - R中的`webshot`抛出“我是`fs`模块幻影错误:TypeError:未定义不是构造函数”
- javascript - 为 javascript 视频播放器解析 m3u8
- python - 计算并减去不是今天的日期的特定时间
- javascript - 从 API 解析后更改值
- list - Tkinter 组合框再次循环。得到结果
- python - 尝试根据用户输入在网格中制作多个动态字计数器