r - 循环创建双变量/交叉表
问题描述
我正在尝试创建一个循环,我想在其中获取第 1 列和第 2 列、第 1 列和第 3 列之间的频率......直到 col1 和 col30。
Col1 col2 col3
0 A 25
1 A 30
0 A 30
1 B 20
0 B 20
输出。
0 1 0 1
A 2 1 25 0 0
B 1 1 30 1 1
20 1 1
解决方案
我们可以用tidyverse
library(tidyverse)
map(names(df)[-1], ~ cbind(df[1], df[.x]) %>%
count(Col1, !! rlang::sym(.x)) %>%
spread(Col1, n, fill = 0))
数据
df <- structure(list(Col1 = c(0L, 1L, 0L, 1L, 0L), col2 = structure(c(1L,
1L, 1L, 2L, 2L), .Label = c("A", "B"), class = "factor"), col3 = c(25L,
30L, 30L, 20L, 20L)), class = "data.frame", row.names = c(NA, -5L))
推荐阅读
- db2 - DB2 - 使用带有字符串数组参数的 Dapper 选择查询将不会返回正确的结果
- amazon-web-services - AWS Timestream:功能问题:任何。要么函数不存在,要么依赖函数有问题
- python - 使用正则表达式从 Python 字符串中提取超链接文本
- python - 在浏览器关闭时运行一个函数 Django
- vue.js - 就设计而言,在 Vue 中使用插槽是一个坏主意吗?
- javascript - 语法荧光笔无法更新文本
- json - next.js 文件加载器的问题,从 JSON 文件加载图像(netlify cms)
- angular - 抛出错误后如何避免执行concatMap?
- python - Pandas DataFrame 跳过行
- python - PyTorch 中基于边界框提取补丁的优化方法