r - 如何转换和计算数据?
问题描述
我有一个带有 4 个分类变量的 data.frame,比例为 1-5。
data.frame(
first=c(2,3,3,2,2),
second=c(5,5,4,5,5),
third=c(5,5,5,4,4),
fourth=c(2,1,1,1,2))
first second third fourth
2 5 5 2
3 5 5 1
3 4 5 1
2 5 4 1
2 5 4 2
我想将变量名称转换为一列并对值进行累积计数并将新变量设置为具有分类规模的行。
newvar 1 2 3 4 5
first 0 3 2 0 0
second 0 0 0 1 4
third 0 0 0 2 3
fourth 3 2 0 0 0
解决方案
不是最干净的方法,但它确实有效。
您用于pivot_longer
将数据转换为长格式。
然后我们可以对数据进行分组并计算每个原始列的出现次数。
使用 将数据转换回宽格式pivot_wider
,然后最后两行重新排列数据以匹配所需的输出。
df %>%
pivot_longer(c(first:fourth)) %>%
count(name, value) %>%
pivot_wider(names_from = "value",
values_from = "n") %>%
select(name, `1`, `2`, `3`, `4`, `5`) %>%
arrange(match(name, c("first", "second", "third", "fourth")), desc(name))
推荐阅读
- python - 如何在heroku中添加“json”库,也用于“时间”
- python - 在某个时间戳之前从 SQL lite 数据库中的所有表中删除记录
- reporting-services - 按日期和时间值从 SSRS 中的 DateTime 值以 24 小时格式分组
- r - 我需要帮助将值从一个向量放入 R 中的另一个向量
- c++ - C++ 中的编译器版本与预编译的 C 库
- c++ - 移动(或复制)捕获可变参数模板参数到 lambda
- python-3.x - 1 我在 google colab 上的这些代码行有问题
- python - 如何将 Pgzero(pygame 零)导出到 .exe?
- r - R中事件的概率
- python - 如何展平 DataFrame 中相似的条目?